CRC循环冗余校验码

2016-06-01  本文已影响1203人  胡哈哈哈

From Wiki-Cyclic redundancy check

A cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data. Blocks of data entering these systems get a short check value attached, based on the remainder of a polynomial division of their contents. On retrieval, the calculation is repeated and, in the event the check values do not match, corrective action can be taken against data corruption.

From 循环冗余校验CRC简介

例如,假设信息码字为11100011,生成多项式G(X)=X5+X4+X+1,计算CRC码字。G(X) = X5+X4+X+1,也就是110011,因为最高次是5,所以,在信息码字后补5个0,变为1110001100000。

用1110001100000模二除法除以110011,余数为11010,即为所求的冗余位。因此发送出去的CRC码字为原始码字11100011末尾加上冗余位11010,即 1110001111010。

接收端收到码字后,采用同样的方法验证,即将收到的码字用模二除法除以110011(是G(X)对应的二进制生成码),发现余数是0,则认为码字在传输过程中没有出错。

尽管在错误检测中非常有用,CRC并不能可靠地校验数据完整性(即数据没有发生任何变化),这是因为CRC多项式是线性结构,可以非常容易地故意改变量据而维持CRC不变。

上一篇下一篇

猜你喜欢

热点阅读