CRC32 整数哈希转字符串

我正在寻找 Lua 实现的 CRC32 并偶然发现了这个: https://github.com/openresty/lua-nginx-module/blob/master/t/lib/CRC32.lua

然而,它返回整数哈希,我该如何获取其字符串等效项?

使用输入“something”,它返回:1850105976

使用在线 CRC32 生成器,我获得了:“879fb991”

点赞
用户1180620
用户1180620

有许多CRC-32算法。您可以在此目录中找到十个不同的CRC-32。您找到的Lua代码和在线CRC32(某处--未提供链接)是不同的CRC-32。

您所指的“字符串等价物”的意思似乎是32位整数的十六进制表示。在Lua中,您可以使用带有打印格式%xstring.format来获取十六进制。对于您给出的示例1850105976,将是6e466078

您的“在线CRC32生成器”似乎正在使用BZIP2 CRC-32,尽管它以反转的顺序(小端)显示了结果CRC的字节。因此,在这种情况下实际的十六进制CRC是91b99f87。您找到的Lua代码似乎正在使用MPEG-2 CRC-32。它们之间唯一的区别是与ffffffff的异或。因此,实际上从两个不同来源得到的两个CRC的异或,6e466078 ^ 91b99f87ffffffff

2016-11-20 18:19:47