我一直在寻找CRC32的Lua实现,并偶然发现:https: //github.com/openresty/lua-nginx-module/blob/master/t/lib/CRC32.lua
然而,它返回整数哈希,我将如何获得相当于它的字符串?
使用输入"something"返回:1850105976
使用在线CRC32生成器,我得到:"879fb991"
有许多CRC-32算法.您可以在此目录中找到十种不同的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 ^ 91b99f87是ffffffff.