当前位置:   article > 正文

CRC算法介绍

crc算法

CRC

简介

循环冗余校验(Cyclic redundancy check) 通称CRC。是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。生成的数字在传输或者存储之前计算出来并且附加到数据后面,然后接收方进行检验确定数据是否发生变化。一般来说,循环冗余校验的值都是32位的整数。由于本函数易于用二进制的计算机硬件使用、容易进行数学分析并且尤其善于检测传输通道干扰引起的错误,因此获得广泛应用

CRC与数据完整性

尽管在错误检测中非常有用,CRC并不能可靠地校验数据完整性(即数据没有发生任何变化),这是因为CRC多项式是线性结构,可以非常容易地故意改变量据而维持CRC不变。

CRC发生碰撞的情况

与所有其它的散列函数一样,在一定次数的碰撞测试之后CRC也会接近100%出现碰撞。CRC中每增加一个数据位,碰撞机率就会减少接近50%,如CRC-20与CRC-21相比。

  • 理论上来讲,CRC64的碰撞概率大约是每18×1018个CRC码出现一次。
  • 由于CRC的不分解多项式特性,所以经过合理设计的较少位数的CRC可能会与使用较多数据位但是设计很差的CRC的效率相媲美。在这种情况下CRC-32几乎同CRC-40一样优秀。

CRC是Hash吗?

Hash是把任意长度数据往固定长度数据上的一种映射,所以基于此概念,CRC也是Hash的一种。

CRC与其它算法的区别

相同点:

  • CRC、MD5、SHA1 都是通过对数据进行计算,来生成一个校验值,该校验值用来校验数据的完整性。

不同点:

  • 算法不同。CRC32采用多项式除法,MD5和SHA1使用的是替换,轮转方法。
  • 校验值长度不同。CRC校验位的长度跟其多项式有关系,一般为16或32位。MD5是16字节(128位)。SHA1是20字节(160位)。
  • 校验值称呼不同。CRC一般叫做CRC值。MD5和SHA1一般叫做哈希值(hash)或散列值。
  • 安全性不同。MD5与SHA1的区安全性比CRC高。
  • 效率不同。CRC计算效率高。
  • 用途不同。CRC一般用作通信数据的校验。MD5和SHA1用于安全领域。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/683788
推荐阅读
相关标签
  

闽ICP备14008679号