Вы проверяли, открывали ли вы файлы в 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 */