什么是 校验和?

校验和是从另一块数字数据中派生出的小块数据,用于检测在传输或存储过程中可能引入的错误。

快速了解

全称校验和/校验位
创建时间1940 年代(早期错误检测码)
规范文档官方规范

工作原理

校验和是从数据计算出的值,用于验证数据完整性。当数据被传输或存储时,会计算校验和并一同发送/存储。检索时重新计算校验和并与原始值比较——如果匹配,则数据可能完好无损。简单的校验和如奇偶校验位可以检测单比特错误,而更复杂的算法如 CRC(循环冗余校验)、MD5 或 SHA 可以检测多个错误甚至篡改。校验和是网络协议(TCP/IP 使用校验和)、文件下载(验证 ISO 镜像)、版本控制系统和数据存储系统的基础。与为安全设计的加密哈希不同,简单校验和优先考虑速度,不具备抗碰撞性。对于关键应用,SHA-256 等加密校验和(哈希函数)既提供完整性验证又能检测篡改。

主要特点

  • 使用数学算法从源数据计算得出
  • 无论输入大小,输出都是固定大小
  • 用于检测意外数据损坏
  • 简单校验和速度快但不安全
  • 只能检测错误,不能纠正错误
  • 与加密不同(不可逆)

常见用途

  1. 验证下载文件的完整性(ISO 镜像、软件)
  2. 网络数据包错误检测(TCP/IP、以太网)
  3. 数据库数据完整性验证
  4. 备份和存储系统验证
  5. 版本控制文件变更检测

示例

loading...
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 内存中。

相关工具

相关术语

相关文章