CRC32整数哈希到字符串

时间:2016-11-20 16:35:37

标签: hash lua crc32

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

然而,它返回整数哈希,我将如何获得相当于它的字符串?

使用输入“something”返回:1850105976

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

1 个答案:

答案 0 :(得分:5)

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

“字符串等效”似乎表示的是32位整数的十六进制表示。在Lua中,您可以使用string.format和打印格式%x来获取十六进制。对于您提供的示例1850105976,即6e466078

您的“在线CRC32生成器”似乎正在使用BZIP2 CRC-32,尽管它以相反的顺序向您显示生成的CRC的字节数(little-endian)。因此,十六进制的实际CRC是91b99f87。您找到的Lua代码似乎使用的是MPEG-2 CRC-32。它们之间的唯一区别是独占或ffffffff。事实上,您从两个不同来源获得的两个CRC的专属或6e466078 ^ 91b99f87ffffffff