Что такое процесс тестирования для алгоритмов хеширования?

Предположим, что я написал реализацию стандартного алгоритма, такого как MD * или SHA *: откуда я знаю, что это правильно? Разные реализации одного и того же алгоритма должны производить один и тот же дайджест?

2

Решение

Сами справочные документы содержат небольшое количество примеров, которые можно использовать. (Хеш "abc" например, во всех справочных документах.) Кроме того, Аарон Гиффорд предоставил ряд тестовых примеров на http://www.adg.us/computers/sha.html. В частности, у него есть тесты для некоторых граничных случаев (где текст точно равен длине блока или меньше, а также пару других специальных длин. Если ваша реализация вычисляет правильное значение для всех них, есть хороший шанс, что это правильно.

5

Другие решения

Да, это так. Однако некоторые алгоритмы хеширования поставляются с вариациями / настройками, поэтому вам нужно будет сопоставить их с таковыми в этом случае.

Хорошим примером является то, как часто дается MD5, чтобы вы могли убедиться, что ваша загрузка была правильной. Чтобы это работало, реализация хеширования MD5 должна давать одинаковый результат для всех реализаций.

3

По вопросам рекламы [email protected]