我正在開發keccak海綿函數,並對哈希結果有一些奇怪的行爲。有幾個程序的Keccak/SHA-3有不同的哈希值?
我使用24位(3字節)的字符串「abc」。 上http://www.di-mgt.com.au/sha_testvectors.html的測試向量爲SHA-3說SHA3-512的結果如下:
從測試向量 b751850b1a57168a SHA3-512 5693cd924b6b096e 08f621827444f70d 884f5d0240d2712e 10e116e9192af3c9 1a7ec57647e39340 57340b4cf408d5a5 6592f8274eec53f0
我還二手cryptopp版本5.62,這讓我這個輸出:
cryptoPP 18587dc2ea106b9a1563e32b331242 1ca164c7f1f07bc922a9c83d77cea3a1e5d0c69910739025372dc14ac9642629379540c17e2a65b19d77aa511a9d00bb96
我用HashTab 5.2.0.14在Windows和它給了我一個文件用 「ABC」 相同的輸出:
HashTab 5.2.0.14 18587dc2ea106b9a1563e32b3312421ca164c7f1f07bc922a9c83d77cea3a1e5d0c69910739025372dc14ac9642629379540c17e2a65b19d77aa511a9d00bb96
因此,有是一些參考,但其中一個與其他人不同。在網站上解釋說,輸入消息附有FIPS-202草案中定義的2位「10」。所以,CryptoPP和HashTab可能使用另一個實現,但哪一個?
現在,我有我的計劃,並從keccak網站上的「參考代碼」,也有另一種實現在Python:
我的計劃 :
我的計劃,「ABC」返回此哈希值20FF13D217D5789FA7FC9E0E9A2EE627363EC28171D0B6C52BBD2F240554DBC94289F4D61CB57DF72DF08AAC4366022D5DF23E703B8FDFF6306021DB4D5E6760
這是keccak基準碼(http://keccak.noekeon.org/KeccakReferenceAndOptimized-3.2.zip )http://keccak.noekeon.org/files.html計算出相同的值:
Keccak-Reference 3。與Keccak大小2040位的2 消息[R = 1024,C = 576] 20FF13D217D5789FA7FC9E0E9A2EE627363EC28171D0B6C52BBD2F240554DBC94289F4D61CB57DF72DF08AAC4366022D5DF23E703B8FDFF6306021DB4D5E6760(截斷爲相同長度)
這是從https://github.com/mgoffin/keccak-python/blob/master/Keccak.py Python實現導致相同的值:
擠壓後keccak,蟒蛇 值:20FF13D217D5789FA7FC9E0E9A2EE627363EC28171D0B6C52BBD2F240554DBC94289F4D61CB57DF72DF08AAC4366022D5DF23E703B8FDFF6306021DB4D5E67601173D04BF5AEC3EBBCA87696355C5FB4D72D00D2CC4F843A0A3A0ED8924A16FC377 69A3DB7C3A84F31E92375A7D74A0136D80A647FBC5AF8D733B43873A3709F
所以我的問題:
1)這是真的,Keccak和SHA-3已經基於與FIPS 202所訂的規格NIST不同的輸出?
2)爲什麼我現在有三個不同的哈希值不是唯一的?
3)在SHA3-512中容量是否改變,以便它具有512位容量和1600-512比特率?這是我在關於SHA-3的演示文稿中閱讀的另一個區別,但我沒有在FIPS-202文檔中找到它。
非常感謝!
問候,
布拉克