我正在开发keccak海绵功能,并且对哈希结果有一些奇怪的行为。
我使用字符串" abc" 24位(3字节)。 http://www.di-mgt.com.au/sha_testvectors.html上SHA-3的测试向量表示SHA3-512的结果如下:
来自Test Vector的SHA3-512 b751850b1a57168a 5693cd924b6b096e 08f621827444f70d 884f5d0240d2712e 10e116e9192af3c9 1a7ec57647e39340 57340b4cf408d5a5 6592f8274eec53f0
我还使用了cryptopp版本5.62,它给了我这个输出:
CryptoPP 18587dc2ea106b9a1563e32b3312421ca164c7f1f07bc922a9c83d77cea3a1e5d0c69910739025372dc14ac9642629379540c17e2a65b19d77aa511a9d00bb96
我在Windows上使用HashTab 5.2.0.14,它为我提供了一个带有" abc"的文件。相同的输出:
HashTab 5.2.0.14 18587dc2ea106b9a1563e32b3312421ca164c7f1f07bc922a9c83d77cea3a1e5d0c69910739025372dc14ac9642629379540c17e2a65b19d77aa511a9d00bb96
所以,有一些参考文献,但其中一个与其他参考文献不同。在网站上解释说,输入消息附有2位" 10"在FIPS-202草案中定义。所以,CryptoPP和HashTab可能会使用另一个实现,但哪一个?
现在我有我的程序和"参考代码"来自keccak网站以及python中的另一个实现:
我的程序返回" abc":
的哈希值我的计划 20FF13D217D5789FA7FC9E0E9A2EE627363EC28171D0B6C52BBD2F240554DBC94289F4D61CB57DF72DF08AAC4366022D5DF23E703B8FDFF6306021DB4D5E6760
这是http://keccak.noekeon.org/KeccakReferenceAndOptimized-3.2.zip上的keccak参考代码(http://keccak.noekeon.org/files.html),用于计算相同的值:
Keccak-Reference 3.2 使用Keccak的大小为2040位的消息[r = 1024,c = 576] 20FF13D217D5789FA7FC9E0E9A2EE627363EC28171D0B6C52BBD2F240554DBC94289F4D61CB57DF72DF08AAC4366022D5DF23E703B8FDFF6306021DB4D5E6760(截断为相同长度)
这是来自https://github.com/mgoffin/keccak-python/blob/master/Keccak.py的python实现,产生相同的值:
keccak-蟒 挤压后值:20FF13D217D5789FA7FC9E0E9A2EE627363EC28171D0B6C52BBD2F240554DBC94289F4D61CB57DF72DF08AAC4366022D5DF23E703B8FDFF6306021DB4D5E67601173D04BF5AEC3EBBCA87696355C5FB4D72D00D2CC4F843A0A3A0ED8924A16FC37769A3DB7C3A84F31E92375A7D74A0136D80A647FBC5AF8D733B43873A3709F
所以我的问题:
1)根据NIST使用FIPS 202制造的规格,Keccak和SHA-3的输出是否正确?
2)为什么我现在有三个不同的哈希值?
3)SHA3-512的容量是否改变,因此它具有512位容量和1600-512比特率?这是我在关于SHA-3的演示文稿中读到的另一个区别,但我没有在FIPS-202文档中找到它。
非常感谢!
此致
布拉克
答案 0 :(得分:4)
2) 就像https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub中提到的那样 FIPS 202于2014年4月7日更改。
CryptoPP的最新版本是从2013年2月20日开始的(这是包括SHA3在内的第一个版本) 见http://www.cryptopp.com/
这解释了为什么CryptoPP与实际测试向量相比产生不同的哈希。我认为同样适用于HashTab。