【发布时间】:2021-08-05 12:21:23
【问题描述】:
我正在尝试在 JavaScript 中重现 Python 的 hashlib.sha256。但是,生成的哈希值不同。
在 Python 中,哈希计算正确:
In [1]: import hashlib
...: from binascii import unhexlify
In [2]: a = "56687282f0f3c1ca76132c6c2fee44ee93a0b3251740719ea3e33b8366d86615"
In [3]: hashlib.sha256(unhexlify(a)).hexdigest()
Out[3]: 'd7928286f70bf6f89802d9b13bed2aae9c65609133dcd37ae03345b4ee2e8731'
在 JavaScript 中使用 CryptoJS 库:
var a = "56687282f0f3c1ca76132c6c2fee44ee93a0b3251740719ea3e33b8366d86615";
for (var bytes = [], c = 0; c < a.length; c += 2){
bytes.push(parseInt(a.substr(c, 2), 16));
}
CryptoJS.SHA256(bytes).toString();
"4ea5c508a6566e76240543f8feb06fd457777be39549c4016436afda65d2330e"
由于 JavaScript 的 bytes 和 Python 的 unhexlify(a) 相同,CryptoJS.SHA256 似乎产生了不同的哈希值。
JavaScript 中的哪个 SHA256 函数与散列字节数组兼容?
【问题讨论】:
标签: javascript python arrays sha256 cryptojs