我试图通过使用cryptojs sha3方法和php-sha3库获得相同的结果,但结果似乎并不匹配。
举个例子:
对于CryptoJS
var hash = CryptoJS.SHA3("qwerty", { outputLength: 224 }).toString();
给了我d7a12ecec4442f1b31eea5f7d5470f0ca6169463e09d91a147c3b8e8
而使用PHP-SHA3
echo sha3("qwerty",224);
给了我13783bdfa4a63b202d9aa1992eccdd68a9fa5e44539273d8c2b797cd
我是一个完全的加密新手,所以我猜我遗漏了一些基本的东西。
发布于 2017-05-06 21:46:21
不幸的是,CryptoJS 'sha3‘实际上并没有使用当前的SHA-3标准--这就是你的差异所在。代码正在实现SHA-3的一个版本,该版本已被取代。
2014年,美国国家标准与技术研究院对Keccak提交的文件进行了细微的修改,并发布了
202,该标准于2015年8月成为官方标准。
引用自此来源:
https://medium.com/@ConsenSys/are-you-really-using-sha-3-or-old-code-c5df31ad2b0
它接着说:
不幸的是,Github中的自述文件没有提到,用户必须查看旧站点才能找到“注意:当我将此实现命名为
-3时,我犯了一个错误。它应该被命名为Keccak。“因此,任何使用sha3的CryptoJS依赖项都在使用旧代码,使用诸如Keccak之类的术语会更好地描述这些代码。另外,要当心在线sha3计算器,因为其中一些还没有更新到SHA-3。
https://stackoverflow.com/questions/36657354
复制相似问题