什么是 校验和?
校验和是从另一块数字数据中派生出的小块数据,用于检测在传输或存储过程中可能引入的错误。
快速了解
| 全称 | 校验和/校验位 |
|---|---|
| 创建时间 | 1940 年代(早期错误检测码) |
| 规范文档 | 官方规范 |
工作原理
校验和是从数据计算出的值,用于验证数据完整性。当数据被传输或存储时,会计算校验和并一同发送/存储。检索时重新计算校验和并与原始值比较——如果匹配,则数据可能完好无损。简单的校验和如奇偶校验位可以检测单比特错误,而更复杂的算法如 CRC(循环冗余校验)、MD5 或 SHA 可以检测多个错误甚至篡改。校验和是网络协议(TCP/IP 使用校验和)、文件下载(验证 ISO 镜像)、版本控制系统和数据存储系统的基础。与为安全设计的加密哈希不同,简单校验和优先考虑速度,不具备抗碰撞性。对于关键应用,SHA-256 等加密校验和(哈希函数)既提供完整性验证又能检测篡改。
主要特点
- 使用数学算法从源数据计算得出
- 无论输入大小,输出都是固定大小
- 用于检测意外数据损坏
- 简单校验和速度快但不安全
- 只能检测错误,不能纠正错误
- 与加密不同(不可逆)
常见用途
- 验证下载文件的完整性(ISO 镜像、软件)
- 网络数据包错误检测(TCP/IP、以太网)
- 数据库数据完整性验证
- 备份和存储系统验证
- 版本控制文件变更检测
示例
Loading code...常见问题
校验和与哈希有什么区别?
虽然两者都能检测数据变化,但校验和主要用于快速检测意外损坏。SHA-256 等加密哈希则是为安全性设计的,提供抗碰撞性和篡改检测。简单校验和容易产生碰撞,而加密哈希使得找到碰撞在计算上不可行。
为什么 MD5 不再被认为是安全的校验和算法?
MD5 容易受到碰撞攻击,这意味着攻击者可以创建两个具有相同 MD5 校验和的不同文件。虽然 MD5 仍可用于检测意外数据损坏,但不应用于安全关键的应用程序。建议使用 SHA-256 或 SHA-3 来满足安全需求。
下载文件后如何验证校验和?
首先,从官方来源获取预期的校验和。然后使用命令行工具如 sha256sum(Linux)、shasum(macOS)或 certutil(Windows)计算下载文件的校验和。将计算出的校验和与预期值进行比较——如果完全匹配,则文件完整无损。
CRC 是什么,它与其他校验和有什么不同?
CRC(循环冗余校验)是一种基于多项式除法的校验和算法。它在检测数据传输和存储中常见的突发错误方面非常高效。与简单的基于求和的校验和不同,CRC 可以检测更多的错误模式,因此在网络协议、存储系统和 ZIP 等文件格式中广泛使用。
校验和能纠正错误还是只能检测错误?
标准校验和只能检测错误,不能纠正错误。要进行错误纠正,需要使用纠错码(ECC),如 Reed-Solomon 或汉明码,它们添加冗余数据以允许重建损坏的位。这些技术用于 CD、DVD、二维码和 ECC 内存中。