Как обеспечивается безопасность в хеш-функциях, где отсутствуют байты NULL? - PullRequest
1 голос
/ 07 марта 2011

Раньше я думал об этой проблеме сам себе и придумал вопрос:

"Теоретически, разве не возможно, что хеш-функция, скажем, X случайных байтов при хешировании, будет считаться уязвимой, поскольку NULL-байты в любом символьном массиве будут интерпретироваться как конец строки в C? И поэтому как злоумышленник, мы можем игнорировать этот символ (и, возможно, других) в нашей исходной строке для грубой силы? "

Извините, если мне не очень ясно об этом.

Ответы [ 2 ]

4 голосов
/ 07 марта 2011

Вывод хеш-функций обычно представляет собой массив байтов фиксированной длины (или машинных слов);его следует интерпретировать как массив фиксированной длины, а не как строку, разделенную нулями.

Решение заключается в использовании memcmp(3) в вашем коде вместо strcmp(3).

3 голосов
/ 07 марта 2011

Хеш-функции не выдают строковый (символьный) вывод.Они создают (фиксированной длины) байтовые массивы.Вы можете преобразовать это в Base64 или Base16, если хотите, тогда у вас есть строка (которая никогда не будет содержать нулевой байт, просто 00).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...