CRC校验是什么意思
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
寄给朋友
请问CRC校验是什么意思,为什么我安装某个软件时,它提示“installer crc invalid呢?怎样可以关闭呢?
---
作者:xyty时间:2002-12-309:49:00来自:211.146.xxx.xxx
正确指数:0作者:shock时间:2002-12-3010:17:00来自:61.172.xxx.xxx
CRC的原理。
(由于CRC实现起来有一定的难度,所以具体怎样用它来保护文件,留待下一节再讲。)
首先看两个式子:
式一:9/3=3(余数=0)
式二:(9+2)/3=3(余数=2)
在小学里我们就知道,除法运算就是将被减数重复地减去除数X次,然后留下余数。
所以上面的两个式子可以用二进制计算为:(什么?你不会二进制计算?我倒~~~)
式一:
1001-->9
0011--->3
---------
0110-->6
0011--->3
---------
0011-->3
0011--->3
---------
0000-->0,余数
一共减了3次,所以商是3,而最后一次减出来的结果是0,所以余数为0
式二:
1011-->11
0011--->3
---------
1000-->8
0011--->3
---------
0101-->5
0011--->3
---------
0010-->2,余数
一共减了3次,所以商是3,而最后一次减出来的结果是2,所以余数为2
看明白了吧?很好,let’s go on!
二进制减法运算的规则是,如果遇到0-1的情况,那么要从高位借1,就变成了(10+0)-1=1
CRC运算有什么不同呢?让我们看下面的例子:
这次用式子30/9,不过请读者注意最后的余数:
11110-->30
1001--->9
---------
1100-->12(很奇怪吧?为什么不是21呢?)
1001--->9
--------
101-->3,余数-->the CRC!
这个式子的计算过程是不是很奇怪呢?它不是直接减的,而是用XOR的方式来运算(程序员应该都很熟悉XOR吧),最后得到一个余数。
对啦,这个就是CRC的运算方法,明白了吗?CRC的本质是进行XOR运算,运算的过程我们不用管它,因为运算过程对最后的结果没有意义;我们真正感兴趣的只是最终得到的余数,这个余数就是CRC值。
进行一个CRC运算我们需要选择一个除数,这个除数我们叫它为“poly”,宽度W就是最高位的位置,所以我刚才举的例子中的除数9,这个poly1001的W是3,而不是4,注意最高位总是1。(别问为什么,这个是规定)
如果我们想计算一个位串的CRC码,我们想确定每一个位都被处理过,因此,我们要在目标位串后面加上W个0位。现在让我们根据CRC的规范来改写一下上面的例子:
Poly=1001,宽度W=3
位串Bitstring=11110
Bitstring+W zeroes=11110+000=11110000
11110000