Правильно ли в реализации реализован хэш-библиотека библиотеки шифрования C#
Хашлиб команда,
Я не уверен, что библиотека SHA3 (Keccak) возвращает правильное шифрование. Я использовал последний исходный код (changeset 78295), загруженный из codeplex, но он не соответствует вектору и результату, представленному в Википедии (страница sha3)
Когда я использую следующий код
IHash hash = HashFactory.Crypto.SHA3.CreateKeccak512();
HashResult res = hash.ComputeString("", System.Text.Encoding.ASCII);
string dd = res.ToString();
в моей VS 2012 IDE я получаю результат как
DF987CFD-23FBC92E-7E87FAAC-A300EC3F-AA1DBADC-678E8EE9-4A830968-F22D9209-64AB402D-C5D0F7B2-0C9644BE-08056555-C789D295-8BDA3DF9-8C94BACC-EA25D3C1
Это на самом деле должно вернуться:
0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e
Согласно следующему сообщению Простая реализация SHA-3 Keccak хеширования с неправильным выводом в C#? Дэвид ответил, что последняя кодовая база должна возвращать правильный результат. Я не уверен, что изменения произошли.
Когда я использовал тестовый вектор, который был взят из файла ExtremelyLongMsgKAT_512.txt
abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno
и используя код
hash.ComputeString("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno").ToString();
результат также отличается от ожидаемого. Файл векторного теста говорит, что результатом будет:
3E122EDAF37398231CFACA4C7C216C9D66D5B899EC1D7AC617C40C7261906A45FC01617A021E5DA3BD8D4182695B5CB785A28237CBB167590E34718E56D8AAB8
Тем не менее, фактический результат был
"B9942109-EB762527-FB384E14-7EDA2DAA-71CA782F-4819B53E-E13C1C13-1C572D99-2B387FA7-212FF624-6EED988D-31AFB23B-4D1B7C44-BC38F908-46EE25F4-AABD5920"
1 ответ
В то время как я не могу говорить за Hashlib, ExtremelyLongMsgKAT_512.txt заявляет, что ввод должен повторяться 16777216 раз. В моем порту по адресу https://bitbucket.org/jdluzen/sha3 я включил большинство встроенных тестов, включая очень длинные.