CRC32、Adler32、Fletcher32、Java String hashCode 与字节累加和,文本与文件皆可。
| 算法 | 十六进制 | 十进制 |
|---|
十进制列对有符号实现(CRC32 有符号、Java hashCode)给出有符号值,其余给出无符号值。
本地计算:全部算法为本站手写纯 JS 实现(lib/checksum.js),文本按 UTF-8 转字节,文件用 FileReader 分块读取后流式喂入,均不上传。CRC32 已与 Node 内置 zlib.crc32 交叉验证,Adler32 与独立参考实现交叉验证。
用途与局限:这些校验和用于「检测意外损坏」(zip/gzip/PNG/以太网帧等都在用),不是密码学哈希:CRC32 只有 32 位,碰撞概率高且可被人为构造,不能用于防篡改、签名或口令存储,那类场景请用 SHA-256 及以上(本站 /tools/sha-hash/)。
Java hashCode:实现为 h = 31*h + c 的 32 位有符号溢出回绕,与 JDK String.hashCode() 一致;对含 emoji 的字符串按 UTF-16 代理对逐码元计算,与 Java 行为相同。