CRC 为 "循环冗余检验" 的缩写 (Cyclical Redundancy Check) ,是一种用得最广,检错能力很强的差错检测方法.它对数据进行多项式计算,并将得到的和数作为这个文件的一个实用的特征码.
CRC 一般为一个 8 位的16进制值串.也就是说,它的组成是可以是 0-F .
为什么需要CRC? - Why is CRC founded?
CRC 可以对文件进行侦错判断,确认文件在转移过程中是否有发生改动.当然也可以防止某些恶意的人为改动-因为CRC很容易反映出这一点.这也是为什么许多文件文件名中都附有 "CRC_XXXXX" 字样的原因.
应该说, CRC 在应用上是十分像 MD5 的.离我们很近的应用就是 eMule 文件链接中的 HASH ,即文件识别码.不过,HASH的长度较长,精度较高.
怎样使用CRC? - How to use CRC?
可以很方便地获取 Kana CheckSum 这个小巧的工具.
http://www.kanasolution.com/download.php?i=42
使用方法:
1.解压缩 zip 文件.
2.执行 crccheck.exe.
3.点击 FileName 栏后的 "..." ,浏览选择所要的文件.
4. Compare 下一行的类型中选择 CRC32 .
5. Calculate! 等待一会儿. CRC32 值计算好后将在 Value 一栏显示.
更方便的方法是:
1.将程序解压至一个安全的地方后,执行 crccheck.exe .
2.选中下方 Integrate with Explorer ,然后浏览器右键菜单中就会增添一项 "Kana Checksum" .
3.在选择的文件上 右键单击-->Kana Checksum-->Calculate CRC32 .等待完成吧~
需要说明的是,计算时间和被计算文件的大小成正比.所以如果计算一个上百 MB 的文件,就需要等个5秒以上了喔.
CRC校验
CRC16=X16+X15+X5+1
http://wenku.baidu.com/view/85758f36eefdc8d376ee3256.html
CRC意思是循环冗余码校验。
校验原理:(M-R)/G=Q+0/G
说明:以接收到的校验码除以约定的除数,若余数为0,则可认为接收到的数据是正确的。
例:有效信息1101,生成多项式样1011
循环校验码解:
有效信息1101(k=4),即M(x)=x3+x2+x0,生成多项式1011(r+1=4,即r=3);
即G(x)=x3+x1+x0,M(x)·x3=x6+x5+x3,即1101000(对1101左移三位);
M(x)·x3/G(x)=1101000/1011=1111+001/1011即1010的CRC是:1101001。
扩展资料:
CRC码集选择的原则:
若设码字长度为N,信息字段为K位,校验字段为R位(N=K+R),则对于CRC码集中的任一码字,存在且仅存在一个R次多项式g(x),使得
V(x)=A(x)g(x)=xRm(x)+r(x);
其中:m(x)为K次信息多项式,r(x)为R-1次校验多项式,
g(x)称为生成多项式:
g(x)=g0+g1x+g2x2+。。。+g(R-1)x(R-1)+gRxR
发送方通过指定的g(x)产生CRC码字,接收方则通过该g(x)来验证收到的CRC码字。
参考资料来源:百度百科-CRC (循环冗余校验)
(1)CRC是循环冗余码校验英文名称为Cyclical Redundancy Check的简称,它是利用除法及余数的原理来作错误侦测(Error Detecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明数据通讯出现错误。
(2)CRC-16码由两个字节构成,是16位,而不是16进制。
在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB移位后已经被移出CRC寄存器)如果为,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位,所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。
(3)因为1个16进制数据占4bit,所以16进制的CRC校验码:0x49F5C077算4*8=32位。