3

我正在开发 keccak 海绵函数,并且对哈希结果有一些奇怪的行为。

我使用 24 位(3 个字节)的字符串“abc”。http://www.di-mgt.com.au/sha_testvectors.html上的 SHA-3 测试向量表明 SHA3-512 的结果如下:

来自测试向量的 SHA3-512 b751850b1a57168a 5693cd924b6b096e 08f621827444f70d 884f5d0240d2712e 10e116e9192af3c9 1a7ec57647e39340 57340b4cf408d5aec5f308276

我还使用了 cryptopp 5.62 版,它给了我这个输出:

CryptoPP 18587dc2ea106b9a1563e32b3312421ca164c7f1f07bc922a9c83d77cea3a1e5d0c69910739025372dc14ac9642629379540c17e2a65b19d77aa511a9d00bb96

我在 Windows 上使用 HashTab 5.2.0.14,它为我提供了具有“abc”相同输出的文件:

哈希表 5.2.0.14 18587dc2ea106b9a1563e32b3312421ca164c7f1f07bc922a9c83d77cea3a1e5d0c69910739025372dc14ac9642629379540c17e2a65d9d09d77aa511a

因此,有一些参考文献,但其中之一与其他参考文献不同。网站上解释说,输入消息附加了 FIPS-202 草案中定义的 2 位“10”。那么,CryptoPP 和 HashTab 可能使用另一种实现,但是是哪一种呢?

现在我有我的程序和来自 keccak 站点的“参考代码”以及 python 中的另一个实现:

我的程序为“abc”返回这个哈希值:

我的程序 20FF13D217D5789FA7FC9E0E9A2EE627363EC28171D0B6C52BBD2F240554DBC94289F4D61CB57DF72DF08AAC4366022D5DF23E703B8FDFF6306021DB4D5E6760

这是http://keccak.noekeon.org/files.html上的 keccak 参考代码 ( http://keccak.noekeon.org/KeccakReferenceAndOptimized-3.2.zip ),它计算相同的值:

Keccak-Reference 3.2 Message of size 2040 bits with Keccak[r=1024, c=576] 20FF13D217D5789FA7FC9E0E9A2EE627363EC28171D0B6C52BBD2F240554DBC94289F4D61CB57DF72DF08AAC4366022D5DF23E703B8FDFF6306021DB4D5E6760 (truncated to the same length)

这是来自https://github.com/mgoffin/keccak-python/blob/master/Keccak.py的 python 实现,结果相同:

keccak-python Value after squeezing : 20FF13D217D5789FA7FC9E0E9A2EE627363EC28171D0B6C52BBD2F240554DBC94289F4D61CB57DF72DF08AAC4366022D5DF23E703B8FDFF6306021DB4D5E67601173D04BF5AEC3EBBCA87696355C5FB4D72D00D2CC4F843A0A3A0ED8924A16FC37769A3DB7C3A84F31E92375A7D74A0136D80A647FBC5AF8D733B43873A3709F

所以我的问题:

1) 根据 NIST 使用 FIPS 202 制定的规范,Keccak 和 SHA-3 是否具有不同的输出?

2)为什么我现在有三个不唯一的不同哈希值?

3) SHA3-512 的容量是否改变为 512 位容量和 1600-512 位速率?这是我在有关 SHA-3 的演示文稿中读到的另一个区别,但我在 FIPS-202 文档中没有找到它。

非常感谢!

问候,

布拉克

4

1 回答 1

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。

于 2014-08-27T17:50:30.010 回答