CryptoJS Sha3和PHP-SHA3

时间:2016-04-15 21:46:04

标签: php hash cryptojs sha-3

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

一个例子:

对于CryptoJS

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

给了我d7a12ecec4442f1b31eea5f7d5470f0ca6169463e09d91a147c3b8e8

使用PHP-SHA3

echo sha3("qwerty",224);

给了我13783bdfa4a63b202d9aa1992eccdd68a9fa5e44539273d8c2b797cd

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

2 个答案:

答案 0 :(得分:3)

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

  

2014年,NIST对Keccak的提交略有变化   发布了FIPS 202,它于8月成为SHA-3的官方标准   2015。

引自此来源:

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

接着说:

  

不幸的是,Github中的自述文件并未提及用户   必须看旧网站才能找到“注意:我犯了错误   将此实现命名为SHA-3。它应该被命名为Keccak。“所以任何   使用sha3的CryptoJS的dependents正在使用旧的代码   通过像Keccak这样的术语更好地描述。另外,要注意在线sha3   计算器,因为其中一些尚未更新为SHA-3。

答案 1 :(得分:0)

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

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