2016-03-27 2 views
0

Я пытаюсь запустить Keccak 224 с официальной библиотекой . К сожалению, я получаю неправильный хеш от функции. Я сомневаюсь, что это вина библиотеки, скорее я делаю что-то неправильно.Ошибка выхода Keccak

Это то, что я пытаюсь:

unsigned char input[] = "abc", output[168]; 
const unsigned long long int inputByteLen = sizeof(input); 

FIPS202_SHA3_224(input, inputByteLen, output); 

std::stringstream stream; 
for (unsigned int i = 0; i < sizeof(output); i++) { 
    stream << std::hex << static_cast<short>(output[i]); 
} 
cout << stream.str() << endl; 

Правильный хэш для "ABC" с SHA-3-224 (Keccak) должно быть:

e642824c3f8cf24a d09234ee7d3c766f c9a3a5168d0c94ad 73b46fdf

Но Я получаю только бессмыслицу от этого способа позвонить в библиотеку. Что я делаю неправильно? Небольшой пример был бы замечательным, что объясняет мне, как я могу достичь ожидаемого результата и что я делаю неправильно.

+0

Вы пытаетесь использовать Keccak 224 или SHA-3 224? Они очень разные. –

+0

SHA3 224. Является ли выходной хэш отличным друг от друга? –

+0

Да, они используют несколько разные константы. –

ответ

1

Вы приняли во внимание нулевой символ в конце?

const unsigned long long int inputByteLen = sizeof(input) - 1;

Смежные вопросы