如何在浏览器中计算字符串的 SHA 哈希 JavaScript
How to calculate SHA hash of a string in browser JavaScript
对 JavaScript 我很陌生。
我认为我知道的
- 前端有
CryptoJS
模块。
- Google 创作了
Closure Library
。
我试过了
- 使用
CryptoJS
模块。但是我没有得到十六进制哈希。
- 根据this doc, this example and from this cdn使用闭包库。
但我的问题是
- 浏览器上有原生加密库吗?
有一个本机浏览器加密。
您想要的代码示例是:
const text = 'An obscure body in the S-K System, your majesty. The inhabitants refer to it as the planet Earth.';
async function digestMessage(message) {
const encoder = new TextEncoder();
const data = encoder.encode(message);
const hash = await crypto.subtle.digest('SHA-256', data);
return hash;
}
digestMessage(text)
.then(digestBuffer => console.log(digestBuffer.byteLength));
上面的例子是 here 找到的,这是 in-browser 密码学的良好开端。
回复:“浏览器上是否有本机加密库?”
您可以使用 CDN 库。
https://cdnjs.com/libraries/crypto-js
请将以下脚本标记引用到您的 html :
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js" integrity="sha512-E8QSvWZ0eCLGk4km3hxSsNmGWbLtSCSUcewDQPQWZF6pEU8GlT8a5fF32wOl1i8ftdMhssTrF/OhyGWwonTcXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
关于如何使用库中的方法,请参考以下网站:
https://cryptojs.gitbook.io/docs/
以下页面显示了我的建议来自的示例:
对 JavaScript 我很陌生。
我认为我知道的
- 前端有
CryptoJS
模块。 - Google 创作了
Closure Library
。
我试过了
- 使用
CryptoJS
模块。但是我没有得到十六进制哈希。 - 根据this doc, this example and from this cdn使用闭包库。
但我的问题是
- 浏览器上有原生加密库吗?
有一个本机浏览器加密。
您想要的代码示例是:
const text = 'An obscure body in the S-K System, your majesty. The inhabitants refer to it as the planet Earth.';
async function digestMessage(message) {
const encoder = new TextEncoder();
const data = encoder.encode(message);
const hash = await crypto.subtle.digest('SHA-256', data);
return hash;
}
digestMessage(text)
.then(digestBuffer => console.log(digestBuffer.byteLength));
上面的例子是 here 找到的,这是 in-browser 密码学的良好开端。
回复:“浏览器上是否有本机加密库?”
您可以使用 CDN 库。
https://cdnjs.com/libraries/crypto-js
请将以下脚本标记引用到您的 html :
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js" integrity="sha512-E8QSvWZ0eCLGk4km3hxSsNmGWbLtSCSUcewDQPQWZF6pEU8GlT8a5fF32wOl1i8ftdMhssTrF/OhyGWwonTcXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
关于如何使用库中的方法,请参考以下网站:
https://cryptojs.gitbook.io/docs/
以下页面显示了我的建议来自的示例: