CRC,(Cyclic Redundancy Check),循环冗余校验。
1,CRC的原理
CRC校验的原理在很多地方写的都比较详细,也比较复杂,但其本质就是一种校验码的计算方法。收、发双方在通信之前要约定好一个多项式(介绍原理的地方也叫做生成多项式,其实就是一串二进制码,关于多项式跟二进制码的对应关系可以参考附录1),通过信息码跟生成多项式做“模2除法”就能计算出校验码,当然,校验码的位数也是由生成多项式决定的(校验码位数=生成多项式对应二进制串位数-1)。
常用的生成多项式有:IBM的SDLC(同步数据链路控制)规程中使用的CRC-16,生成多项式g(x)= x16 + x15 + x2 +1(对应二进制比特串为:11000000000000101);而在ISO HDLC(高级数据链路控制)规程、ITU的SDLC、X.25、V.34、V.41、V.42等中使用CCITT-16生成多项式g(x)= x16 + x15 + x5 +1(对应二进制比特串为:11000000000100001)。
“模2除法”跟“算术除法”不同,它