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

时间:2015-02-13 16:56:39

标签: python crc32

我试图计算文件的crc32校验和,但似乎我的代码没有正确计算。

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

显然会返回小数校验和(对吗?),但是当我将其转换为十六进制时,它似乎并不匹配(我使用其中一个十进制到十六进制的网站)。

我在Python返回时得到这个:2370036543 (8D43E33F) 和我下载的DigitalVolcano HashTool 1.1的校验和返回:(300654116) 11eb9e24

我确信哈希工具是正确的,因为我已经使用它来比较校验和(并且它们匹配)。

我正在运行Windows。

1 个答案:

答案 0 :(得分:3)

您没有说明您正在执行此操作的系统,但您可能需要使用“rb”而不是“r”打开,以确保读取数据上没有行尾转换。最好将其置于可移植性并记录您正在考虑输入为二进制数据。