加载中...

循环冗余校验(Cyclic Redundancy Check,CRC)是一种差错检测算法:发送方将数据视为二进制多项式,除以约定的生成多项式,把余数作为校验值附在数据后;接收方以相同方式验算,余数不符即说明传输出错。
CRC 的运算基于模 2 多项式除法(异或代替减法),可用移位寄存器高效实现,硬件成本极低;查表法则让软件实现也能逐字节快速计算。不同的生成多项式对应不同变体,常见的有 CRC-8、CRC-16、CRC-32(以太网、ZIP、PNG 采用)和 CRC-32C(有 SSE4.2 专用指令)。
CRC 对突发错误检测能力强,能检出所有不超过校验位长度的突发差错,适合检测信道噪声造成的随机翻转。
CRC 是线性函数且无密钥,攻击者可轻易构造出校验值相同的篡改数据,因此它只能防意外损坏、不能防恶意篡改;需要抗篡改时应使用加密哈希(如 SHA-256)或消息认证码(HMAC)。

登录 后参与讨论
暂无讨论,来发表第一条评论吧