Я занимаюсь программированием на Python (все еще n00b на нем) и наткнулся на что-то странное. Я сделал небольшую программу, чтобы найти хэш MD5 имени файла, переданного ему в командной строке. Я использовал функцию, которую я нашел here на SO. Когда я запускал его против файла, я получил хеш «58a ... 113». Но когда я запустил Microsoft FCIV или md5sum.py в \ Python26 \ Tools \ Scripts \, я получаю другой хэш, «591 ... ae6». Фактическая хеширования часть md5sum.py в скриптахРазличия хэша MD5 между Python и другими файловыми файлами
m = md5.new()
while 1:
data = fp.read(bufsize)
if not data:
break
m.update(data)
out.write('%s %s\n' % (m.hexdigest(), filename))
Это выглядит функционально идентичен коду в функции, заданной в другой ответ ... Что мне не хватает? (Это мой первый раз, разместив на StackOverflow, пожалуйста, дайте мне знать, если я делаю это неправильно.)
Где находится 'fp'? Вы открываете его в режиме ASCII вместо двоичного? – FogleBird
Ах, ха! Вот и все. Я не указывал параметр mode в функции open() в моей программе, поэтому он не выполнял текстовый режим. Я установил режим в «rb», и теперь он возвращает правильный хеш. Благодаря! – Sam