【问题标题】:Python - Hashlib MD5 differs between linux/windowsPython - Hashlib MD5 在 linux/windows 之间有所不同
【发布时间】:2010-08-02 18:07:06
【问题描述】:

我有一个 python 应用程序,我在其中创建要在 windows 中使用的包,然后在 linux python 应用程序中进行比较。我正在为 windows 中的文件创建一个 md5,以便稍后在 linux 中检查。问题是同一文件上的相同代码在每个环境中给出不同的 Md5 哈希结果。下面是我用来计算 Md5 的方法。 (每一端都是相同的代码,我在 windows/linux 环境中都使用 Python 2.6.5)当我在不同环境中的同一个文件上运行它时,我得到不匹配的 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()

感谢任何想法或建议。

【问题讨论】:

    标签: python


    【解决方案1】:

    open(filePath) 更改为open(filePath, 'rb'),其中b 用于二进制模式。您当前以文本模式打开,这可能会导致可移植性问题。

    【讨论】:

    • 就是这样!我现在在两个系统上都得到了匹配的 MD5。谢谢
    【解决方案2】:

    检查两个文件是否使用相同的编码和换行符

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多