CRC32 整数散列到字符串

CRC32 integer hash to string

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

但是它 returns 整数散列,我将如何获得它的等效字符串?

使用输入"something"它returns:1850105976

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

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

"string equivalent" 的意思似乎是 32 位整数的十六进制表示。在 Lua 中,您可以使用 string.format 和打印格式 %x 来获得十六进制。对于您给出的示例,1850105976,即 6e466078

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