2024年5月3日发(作者:)

寄给朋友

请问CRC校验是什么意思,为什么我安装某个软件时,它提示“installercrcinvalid呢?怎样可以关闭呢?

---

作者:xyty

时间:2002-12-309:49:00来自:

我也不是很明白,不过着到如下信息,希望对你有帮助。CRC校验由于实现简单,检错能力强,被广泛使用在各种数据

校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测地一种很好的手段。

---

附件:循环冗余校验CRC的算法分析和程序实现.doc

问题的注释

作者:shock

时间:2002-12-3010:17:00来自:

正确指数:0

CRC的原理。

(由于CRC实现起来有一定的难度,所以具体怎样用它来保护文件,留待下一节再讲。)

首先看两个式子:

式一:9/3=3

式二:(9+2)/3=3

(余数=0)

(余数=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’sgoon!

二进制减法运算的规则是,如果遇到0-1的情况,那么要从高位借1,就变成了(10+0)-1=1

CRC运算有什么不同呢?让我们看下面的例子:

这次用式子30/9,不过请读者注意最后的余数:

11110

1001-

---------

1100

1001-

--------

101

-->30

-->9

-->12

-->9

(很奇怪吧?为什么不是21呢?)

-->3,余数-->theCRC!

这个式子的计算过程是不是很奇怪呢?它不是直接减的,而是用XOR的方式来运算(程序员应该都很熟悉XOR吧),最

后得到一个余数。

对啦,这个就是CRC的运算方法,明白了吗?CRC的本质是进行XOR运算,运算的过程我们不用管它,因为运算过程对

最后的结果没有意义;我们真正感兴趣的只是最终得到的余数,这个余数就是CRC值。

进行一个CRC运算我们需要选择一个除数,这个除数我们叫它为“poly”,宽度W就是最高位的位置,所以我刚才举的例

子中的除数9,这个poly1001的W是3,而不是4,注意最高位总是1。(别问为什么,这个是规定)

如果我们想计算一个位串的CRC码,我们想确定每一个位都被处理过,因此,我们要在目标位串后面加上W个0位。现

在让我们根据CRC的规范来改写一下上面的例子:

Poly

位串Bitstring

Bitstring+Wzeroes

11110000

=

=

=

1001,宽度W=3

11110

11110+000=11110000