2014-08-27 8 views
4

Я разрабатываю функцию губки keccak и имею некоторое странное поведение относительно результата хеширования.Различные хеши для Keccak/SHA-3 с несколькими программами?

Я использую строку «abc» с 24 битами (3 байта). Тестовые векторы для SHA-3 на http://www.di-mgt.com.au/sha_testvectors.html говорят, что результат SHA3-512 следующая:

SHA3-512 от Тестовые Вектор b751850b1a57168a 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

Итак, есть некоторые ссылки, но один из них отличается от других. На веб-сайте объяснено, что входное сообщение прикреплено двумя битами «10», определенными в черновике FIPS-202. Таким образом, CryptoPP и HashTab используют, возможно, другую реализацию, но какой?

Теперь у меня есть программа и «эталонный код» с сайта keccak, а также другую реализацию в Python:

Моя программа возвращает этот хэш-значение «ABC»:

Моя программа 20FF13D217D5789FA7FC9E0E9A2EE627363EC28171D0B6C52BBD2F240554DBC94289F4D61CB57DF72DF08AAC4366022D5DF23E703B8FDFF6306021DB4D5E6760

Это ссылка keccak код (http://keccak.noekeon.org/KeccakReferenceAndOptimized-3.2.zip) на http://keccak.noekeon.org/files.html, который рассчитывает то же значение:

Keccak-Reference 3.2 Сообщение от размера 2040 битов с Keccak [г = 1024, с = 576] 20FF13D217D5789FA7FC9E0E9A2EE627363EC28171D0B6C52BBD2F240554DBC94289F4D61CB57DF72DF08AAC4366022D5DF23E703B8FDFF6306021DB4D5E6760 (усекается до той же длины)

Это реализация Python из https://github.com/mgoffin/keccak-python/blob/master/Keccak.py приводит к тому же значению:

keccak-питон Значение после отжима: 20FF13D217D5789FA7FC9E0E9A2EE627363EC28171D0B6C52BBD2F240554DBC94289F4D61CB57DF72DF08AAC4366022D5DF23E703B8FDFF6306021DB4D5E67601173D04BF5AEC3EBBCA87696355C5FB4D72D00D2CC4F843A0A3A0ED8924A16FC377 69A3DB7C3A84F31E92375A7D74A0136D80A647FBC5AF8D733B43873A3709F

Так мои вопросы:

1) Верно ли, что Keccak и SHA-3 имеют разные выходы на основе спецификации NIST сделал с FIPS 202?

2) Почему у меня есть три разных значения хэша, которые не уникальны?

3) Является ли емкость изменена в SHA3-512 так, чтобы она имела емкость 512 бит и 1600-512 битрейт? Это еще одна разница, которую я прочитал в презентации о SHA-3, но я не нашел ее в документе FIPS-202.

спасибо!

Привет,

BURAK

ответ

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 был изменен на 7 апреля 2014 г.

Последнее освобождение от CryptoPP от 2/20/2013 (который был первым выпуском, включая SHA3) см. http://www.cryptopp.com/

Это объясняет, почему CryptoPP производит другой хэш по сравнению с приводом al test. Я думаю, что то же самое относится и к HashTab.