У меня есть приложение python, в котором я создаю пакеты в окнах, которые будут использоваться, а затем сравниваться в приложении python для linux. Я создаю md5 для файла в Windows, чтобы позже проверить его в Linux. Проблема в том, что один и тот же код в одном файле дает разные результаты хеширования Md5 в каждой среде. Ниже приведен метод, который я использую для расчета Md5. (Это один и тот же код на каждом конце, и я использую Python 2.6.5 для обеих сред windows / linux) Когда я запускаю его в одном файле в разных средах, я получаю хэши md5, которые не совпадают.

def md5_for_file(filePath):
        md5 = hashlib.md5()
        file = open(filePath)
        while True:
            data = file.read(8192)
            if not data:
                break
            md5.update(data)

        file.close()   
        return md5.hexdigest()

Любые идеи или предложения приветствуются.

11
Tom Lerma 2 Авг 2010 в 22:07

2 ответа

Лучший ответ

Измените open(filePath) на open(filePath, 'rb'), где b означает двоичный режим. В настоящее время вы открываете текстовый режим, что может вызвать проблемы с переносимостью.

23
Cory Petosky 2 Авг 2010 в 18:21

Проверьте, используют ли два файла одинаковую кодировку и окончания строк

0
Nikolaus Gradwohl 2 Авг 2010 в 18:10