//将字符串转换为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系列视为一个不错的选择,因为所有主要的浏览器都可能会支持它。