【发布时间】:2019-10-06 20:30:37
【问题描述】:
我正在尝试在 JS 中生成 sha3-512 哈希并在 golang 服务器中检查它。然而,cryptoJS 产生的哈希值与 golang 不同。
CryptoJS:
CryptoJS.algo.SHA3.create().update("foo").finalize().toString(CryptoJS.enc.Hex)
输出:
1597842aac52bc9d13fe249d808afbf44da13524759477404c3592ee331173e89fe1cbf21a7e4360990d565fad4643cdb209d80fa41a91dea97e665022c92135
Golang:
hex.EncodeToString(crypto.SHA3_512.New().Sum([]byte("foo")))
输出:
666f6fa69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26
我希望这些哈希值相等,但它们不是
【问题讨论】:
-
很有趣,我用 Python 的
hashlib.sha3_512(b“foo“).hexdigest()得到了第三个值... -
假设你的 Go 包实现了 hash.Hash 你必须在 Sum 之前调用 Write(将哈希输入传递给 Sum 是无意义的)。
-
FWIW 试图做
h.Sum(data)是一个非常常见的错误。我已经在 2 家公司的 3 个不同的代码库中修复了相同的错误。
标签: javascript go cryptojs sha-3