-
-
软件加密的CRC和网络数据校验使用的CRC是不是一样的?
-
2004-10-28 16:48
5758
-
软件加密的CRC和网络数据校验使用的CRC是不是一样的?
是否都是这个算法?
CRC(循环冗余码)又称为多项式码。这是因为,任何一个由二进制数位串组成的代码都可以和一个只含有0和1两个系数的多项式建立一一对应的关系。例如,代码1011011对应的多项式为 ,而多项式 对应的代码为110110。并且,CRC码在发送端编码和接收端校验时都可以利用一个事先约定的生成多项式G(x)。k位要“发送”的信息位可以对应于一个(k-1)次多项式K(x),r位冗余位(即我们用于校验的散列值)对应于一个(r-1)次多项式R(x)。由k位信息位后面加上r位冗余位组成的n= k+r位码字则对应一个(n-1)次多项式T(x)= *K(x)+R(x)。这个T(x)就是我们要“发送”的信息码。
由信息位产生冗余位的编码过程,就是已知K(x)求R(x)的过程,在CRC码中,可以通过找到一个特定的r次多项式G(x)(最高次项 的系数为1)来实现。确定G(x)后,用G(x)去除 *K(x)得到的余式就是R(x)。
R(x)= *K(x)/G(x)(注意这里的算术运算都是模2的,且“/”代表求余)
校验时,使用逻辑表达式
T(x)/G(x)= =0 (“/”代表求余)
来验证信息的完整性。若此表达式的值为真,我们认为信息是完整的,否则说明信息有差错。
阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开
发者可享99元/年,续费同价!