JavaScript 创建摘要(例如SHA-256)

示例

//将字符串转换为ArrayBuffer。仅当您希望对字符串进行哈希处理时才需要执行此步骤,而当您获得了诸如Uint8Array之类的ArrayBuffer时则不需要此步骤。
var input = new TextEncoder('utf-8').encode('Hello world!');

// 计算SHA-256摘要
crypto.subtle.digest('SHA-256', input)
// 等待完成
.then(function(digest) {
  //摘要是一个ArrayBuffer。有多种方法可以进行。

  // 如果要将摘要显示为十六进制字符串,则可以使用:
  var view = new DataView(digest);
  var hexstr = '';
  for(var i = 0; i < view.byteLength; i++) {
    var b = view.getUint8(i);
    hexstr += '0123456789abcdef'[(b & 0xf0) >> 4];
    hexstr += '0123456789abcdef'[(b & 0x0f)];
  }
  console.log(hexstr);

  // 否则,您可以简单地从缓冲区创建一个Uint8Array:
  var digestAsArray = new Uint8Array(digest);
  console.log(digestAsArray);
})
// 捕获错误
.catch(function(err) {
  console.error(err);
});

目前的草案建议提供至少SHA-1,SHA-256,SHA-384和SHA-512,但是这是没有严格的要求,如有更改。但是,仍然可以将SHA系列视为一个不错的选择,因为所有主要的浏览器都可能会支持它。