哈希与安全

CRC32 哈希生成器

立即将任意文本转换为其 8 位字符的 CRC-32 校验和。

给这个工具评分

如何使用 CRC32 哈希生成器

  1. 在输入框中键入或粘贴您的文本。
  2. 选择变体——CRC-32B是您几乎总是需要的标准选项。
  3. 校验和会随着输入实时显示;点击“复制”即可获取结果。

关于 CRC32 哈希生成器

CRC-32是一种循环冗余校验,并非密码学意义上的哈希算法。它将您的数据视为一个巨大的二进制数,用一个固定的多项式去除,并保留余数——32位,写作8个十六进制字符。正是这种数学原理让它擅长完成自己真正的任务:发现意外损坏,尤其是突发性错误,即一连串连续比特因为一根坏线缆、一张划伤的光盘或嘈杂的无线链路而被翻转的情况。它是内置于zip、gzip、PNG以及以太网帧中的校验机制。

有一个细节经常让人困惑。PHP提供两个名称,而它们对相同输入不会给出相同的结果crc32b是与zip、gzip和PNG相匹配的标准CRC-32——当您需要与其他工具打印出的校验和进行比对时,这就是您需要的那一个。crc32是BZIP2变体,使用相同的多项式但比特顺序不同,因此得出的数字完全不同。如果您的校验和“对不上”,几乎总是这个原因造成的。第三个选项CRC-32C使用Castagnoli多项式:它具有明显更好的错误检测特性,并且直接由SSE4.2指令集在硬件层面实现,这也是iSCSI、ext4和Btrfs等存储密集型系统选择它的原因。

CRC不是安全工具,也无法被改造成安全工具。它是一个线性函数,这意味着攻击者只要修改了您的数据,就能精确计算出需要调整哪些字节,才能让结果重新落回原来的校验和——完全不需要暴力破解,只需简单的算术运算。CRC能告诉您文件在传输过程中是否完好无损;但它完全无法告诉您是否有人在途中动过手脚。要判断这一点,您需要真正的密码学哈希算法,例如SHA-256,即便是已被攻破的MD5,也远比CRC强大得多。

常见问题

为什么 CRC-32 和 CRC-32B 会得出不同的结果?

它们是不同的变体。CRC-32B是zip、gzip和PNG使用的标准变体;PHP中的CRC-32是BZIP2变体,比特顺序不同。相同的输入,不同的输出——除非您特别需要BZIP2,否则请选择CRC-32B。

为什么 CRC-32 总是 8 个字符?

结果始终是32位,每个十六进制字符携带4位信息,因此无论输入多大,每个CRC-32都恰好是8个字符。

我可以将 CRC-32 用于密码或签名吗?

不可以——绝对不行。CRC-32的设计目的是发现意外错误,而不是防范蓄意攻击,而且它极易被伪造:任何人都可以通过调整几个字节,得到自己想要的任意校验和。密码请使用bcrypt,签名请使用SHA-256。

CRC-32C 是用来做什么的?

CRC-32C使用Castagnoli多项式,能检测更多种错误模式,现代CPU还能通过SSE4.2在硬件层面直接计算它。正是这一组合,使得iSCSI、ext4和Btrfs将其用于磁盘和传输链路上的完整性校验。

我的文本会被发送到其他地方吗?

您的文本会被发送到我们的服务器进行校验和计算,因为浏览器无法计算CRC-32。处理完成后会立即丢弃——绝不记录,也绝不存储。