校验和

为检测数据错误而计算的值。用于数据传输和文件存储时的完整性验证。

校验和是为验证数据完整性而计算的固定长度值。通过比较源端和目标端的校验和,可以确认数据在传输过程中是否损坏。其原理很简单:将整个数据通过特定算法处理,生成一个短小的"指纹"值。

常见的校验和方法包括 CRC (循环冗余校验)、Adler-32、MD5 和 SHA-256。CRC-32 生成 32 位校验值,广泛用于以太网帧和 ZIP 归档。MD5 生成 128 位 (32 个十六进制字符) 的摘要,但由于碰撞抗性较低,目前不再推荐用于安全用途。探索情趣围裙 (Amazon)详细介绍了校验和的工作原理。

验证软件下载时提供的 SHA-256 校验和可以确认文件未被篡改。Linux 发行版的 ISO 镜像通常在官方网站上公布校验和值。在命令行中,可以使用 sha256sum (Linux) 或 shasum -a 256 (macOS) 轻松验证。

校验和与哈希值容易混淆,但严格来说它们的目的不同。校验和主要用于检测偶发的数据损坏,而哈希值旨在检测故意篡改和唯一标识数据。不过在实际应用中,SHA-256 等密码学哈希函数经常被用作校验和,两者的界限比较模糊。

计算文本数据的校验和时需要注意字符编码。同一字符串在 UTF-8 和 Shift_JIS 下会产生不同的字节序列,因此校验和值也不同。换行符的差异 (LF 与 CRLF) 也会影响结果,因此跨平台文件验证时统一换行符很重要。

从字符计数角度看,校验和字符串长度由算法固定:CRC-32 产生 8 个十六进制字符,MD5 产生 32 个,SHA-256 产生 64 个。无论输入数据大小如何,输出长度始终不变,这是校验和的重要特性。查看敏感带 (Amazon)提供了更多背景知识。

分享这篇文章