SHA-1, RFC3174 и RFC4634 - PullRequest
       7

SHA-1, RFC3174 и RFC4634

2 голосов
/ 21 января 2011

Новый для сообщества, но не новый для программирования.

Я пытался запустить / запустить коллекцию хэш-функций, и мне это удалось.Однако я нашел некоторые странные результаты и пока не смог до него доказать.RFC4634 содержит реализацию C для семейства SHA-1 и SHA-2, которая также может принимать файл, передаваемый для хэширования.RFC3174 содержит реализацию C, но не обрабатывает файловые потоки.Я использовал реализацию C из RFC4634 для проверки файлов, но процесс проверки возвращает несходные результаты, когда я сравниваю их с хэш-данными, предоставленными SHA-1.

Есть идеи, какие могут быть причины?*

1 Ответ

2 голосов
/ 21 января 2011

Вы проверяли, открывали ли вы файлы в ASCII или бинарном режиме?Перевод конца строки может быть выполнен до вычисления хеша.

Обновление:

Я только что скомпилировал RFC4634 shatest и попробовал создать образец текстового файла.Пока нет перевода строки, все инструменты согласны.После того, как вы вставите разрыв строки, результаты зависят: если текстовый файл использует CR и LF (режим DOS), то shatest дает другой результат.Если конец строки - только LF (UNIX), он по-прежнему согласуется с другими инструментами.

Обновление 2:

В файле shatest.c из RFC4634, вфункция hashfile(...), установите fopen в двоичный режим:

FILE *hashfp = (strcmp(hashfilename, "-") == 0) ? stdin :
        fopen(hashfilename, "rb");
/*                            ^ HERE */
...