2

我试图通过使用 cryptojs sha3 方法和 php-sha3 库获得相同的结果,但结果似乎不匹配。

一个例子:

对于 CryptoJS

var hash = CryptoJS.SHA3("qwerty", { outputLength: 224 }).toString();

给我d7a12ecec4442f1b31eea5f7d5470f0ca6169463e09d91a147c3b8e8

而使用 PHP-SHA3

echo sha3("qwerty",224);

给我13783bdfa4a63b202d9aa1992eccdd68a9fa5e44539273d8c2b797cd

我是一个完整的加密菜鸟,所以我猜我错过了一些基本的东西。

4

2 回答 2

4

不幸的是,CryptoJS 'sha3' 实际上并没有使用当前的 SHA-3 标准 - 因此你的差异。该代码正在实现已被取代的 SHA-3 版本。

2014 年,NIST 对 Keccak 提交的文件进行了轻微修改,并发布了 FIPS 202,该标准于 2015 年 8 月成为官方 SHA-3 标准。

引用自此来源:

https://medium.com/@ConsenSys/are-you-really-using-sha-3-or-old-code-c5df31ad2b0

接着说:

不幸的是,Github 中的自述文件没有提及,用户必须查看旧站点才能找到“注意:我在将此实现命名为 SHA-3 时犯了一个错误。它应该被命名为Keccak。” 因此,任何使用 sha3 的 CryptoJS 依赖项都在使用旧代码,用 Keccak 之类的术语可以更好地描述这些代码。另外,请注意在线 sha3 计算器,因为其中一些尚未更新到 SHA-3。

于 2017-05-06T13:46:21.350 回答
0

阿尔乔姆是对的。你可以试试这个 JS 库,https://github.com/emn178/js-sha3。我可以用它来生成 SHA3 和 Keccak 哈希。

您可以在http://emn178.github.io/online-tools/sha3_224.html验证哈希。

于 2016-04-19T08:22:03.747 回答