循环冗余检查


循环冗余检查

文章插图
循环冗余检查【循环冗余检查】循环冗余校验(英语:Cyclic redundancy check,通称“CRC”)是一种根据网上数据包或计算机档案等数据产生简短固定位数校验码的一种散列函式,主要用来检测或校验数据传输或者保存后可能出现的错误 。生成的数字在传输或者存储之前计算出来并且附加到数据后面,然后接收方进行检验确定数据是否发生变化 。一般来说,循环冗余校验的值都是32位的整数 。由于本函式易于用二进制的计算机硬体使用、容易进行数学分析并且尤其善于检测传输通道干扰引起的错误,因此获得广泛套用 。此方法是由W. Wesley Peterson于1961年发表 。
基本介绍中文名:循环冗余检查
外文名:Cyclical Redundancy Check
性质:数据传输检错功能
用途:对数据进行多项式计算
解决办法:用FlashGet下载工具来解决问题
学科:计算机科学
简介循环冗余校验(英语:Cyclic redundancy check,通称“CRC”)是一种根据网上数据包或计算机档案等数据产生简短固定位数校验码的一种散列函式,主要用来检测或校验数据传输或者保存后可能出现的错误 。生成的数字在传输或者存储之前计算出来并且附加到数据后面,然后接收方进行检验确定数据是否发生变化 。一般来说,循环冗余校验的值都是32位的整数 。由于本函式易于用二进制的计算机硬体使用、容易进行数学分析并且尤其善于检测传输通道干扰引起的错误,因此获得广泛套用 。此方法是由W. Wesley Peterson于1961年发表 。CRC为校验和的一种,是两个位元组数据流採用二进制除法(没有进位,使用XOR来代替减法)相除所得到的余数 。其中被除数是需要计算校验和的信息数据流的二进制表示;除数是一个长度为
循环冗余检查

文章插图
的预定义(短)的二进制数,通常用多项式的係数来表示 。在做除法之前,要在信息数据之后先加上
循环冗余检查

文章插图
个0.CRC是基于有限域GF(2)(即除以2的同余)的多项式环 。简单的来说,就是所有係数都为0或1(又叫做二进制)的多项式係数的集合,并且集合对于所有的代数操作都是封闭的 。例如:
循环冗余检查

文章插图
2会变成0,因为对係数的加法运算都会再取2的模数 。乘法也是类似的:
循环冗余检查

文章插图
我们同样可以对多项式作除法并且得到商和余数 。例如,如果我们用x+x+x除以x+ 1 。我们会得到:
循环冗余检查

文章插图
也就是说:
循环冗余检查

文章插图
等价于:
循环冗余检查

文章插图
这里除法得到了商x+ 1和余数-1,因为是奇数所以最后一位是1 。字元串中的每一位其实就对应了这样类型的多项式的係数 。为了得到CRC,我们首先将其乘以
循环冗余检查

文章插图
,这里n是一个固定多项式的阶数,然后再将其除以这个固定的多项式,余数的係数就是CRC 。在上面的等式中,
循环冗余检查

文章插图
表示了本来的信息位是111,
循环冗余检查