CRC32 没有计算正确的校验和?

CRC32 not calculating the right checksum?

我正在尝试计算文件的 crc32 校验和,但我的代码似乎计算不正确。

def crc32_checksum(directory):
    file = open(directory, "r").read()
    file_checksum = str(binascii.crc32(file) & 0xffffffff)
    return file_checksum

显然这将 return 十进制校验和(对吗?),但是当我将其转换为十六进制时,它似乎不匹配(我正在使用其中一个十进制到十六进制的网站) .

我得到这个作为 Python return: 2370036543 (8D43E33F) 以及我下载的 DigitalVolcano HashTool 1.1 的校验和 returns 这个:(300654116) 11eb9e24.

我确信 hashtool 是正确的,因为我已经使用它比较了校验和(并且它们匹配)。

我是 运行 Windows。

您没有说明您在哪个系统上执行此操作,但您可能需要使用 "rb" 而不是 "r" 打开以确保没有行尾翻译读取的数据。无论如何,最好将其放入可移植性并记录您正在考虑输入为二进制数据。