Я работаю над написанием функции SHA512. Когда я проверяю файл, который я шифрую в разных источниках, инструмент Linux SHA512SUM, пару веб-сайтов и запускаю его через старый исходный код для SHA512, все они дают разные значения хэширования. Моя мысль в этом проекте заключается в том, что все алгоритмы Hash выдадут одно и то же значение хеширования, если будут реализованы правильно, для использования в качестве контрольной суммы. Неужели я ошибаюсь в этом? Если я ошибаюсь, как бы я действительно проверял, правильно ли работает моя работа?Должны ли все реализации SHA512 давать один и тот же хэш?
Заранее спасибо.
Для хэширования строки «Привет там» инструмент Linux дает первые три номера в виде «526», а на веб-сайте http://hash.online-convert.com/sha512-generator есть начало как " 523" . Эта тенденция продолжается только с согласия двух веб-сайтов. Исходный код, с которым я работаю, использует форму двоичного кода для фактического отображения хэша. Как узнать, с каким инструментом по-настоящему работать? – Matt
Хеширование работает с битами и байтами, а не с текстом, поэтому вам нужно учитывать декодированную версию вашего ввода. Во-первых, попробуйте его с некоторыми из более релевантных тестовых векторов. Как правило, пустая строка является хорошим тестовым вектором, но вы можете найти много других с помощью простого веб-поиска. – Stephane
О, и «Привет там», когда он закодирован как прямая 8-битная ASCII-строка, возвращает следующий хэш (с шестнадцатеричным кодированием): 523df363aa22c25478a478d25e6945f842509df8b77b0c755a40538a9a239ae178b3225f516bdb9e29f6d1cb7de4f2cf74e67fd85f6d9817c48890d686d51838 – Stephane