美文网首页
CRC校验原理

CRC校验原理

作者: 叶小榕 | 来源:发表于2018-10-27 12:24 被阅读0次

CRC校验用于检验数据传输过程中数据是否有错误。CRC的错误检测能力依赖于关键多项式的阶次以及所使用的特定关键多项式。误码多项式E(x)是接收到的消息码字与正确消息码字的异或结果。当且仅当误码多项式能够被CRC多项式整除的时候CRC算法无法检查到错误。

我们传输的信息都可以通过二进制来表示,假设我们传输的信息为1010011,该二进制同时可以用多项式来表示,1010011可以表示为 x^6 + x^4 + x^1 + x^0,该多项式表示对应的二进制码一共6位,第0位,第1位,第4位,第6位为1,其他位为0,即1010011。

生成多项式是校验双方共同约定的一个多项式,在传输过程中,该多项式始终不变。生成多项式的最高位和最低位必须是1,。通常有一些标准的生成多项式,例如:
CRC-4 x4+x+1 3 ITU G.704
CRC-8 x8+x5+x4+1 31 DS18B20
CRC-12 x12+x11+x3+x2+x+1 80F

假设我们约定的生成多项式为CRC-4 x^4+x+1(这个通常自己选择,选择标准的生成多项式即可),转换成二进制编码就是10011。
假设我们传输的数据是1010011,加密过程就是在我们传输数据后面0,然后除以(模2除法)生成多项式的二进制编码,得到的余数即为校验码,最后将校验码附在传输数据的后面即可,最终的传输数据为1010011xxxx。
传输数据补0的个数为生成多项式的位数减1,如上生成多项式为CRC-4时,二进制编码为10011,补0的个数为4个,计算时使用10100110000,然后除以(模2除法)10011,得到余数为0111,最终我们传输的数据为10100110111。接收方收到10100110111后除以(模2除法)10011,余数为0,即很大概率传输过程中数据是正确的。但如果传输的数据是10100100100,其对10011进行模2除法后,余数也为0,此时是CRC无法校验出错误。CRC校验的精准程度随着选择的多项式的位数越高而越精准,通常意义上,64位比32位更难出现碰撞。

相关文章

  • leveldb源码学习--crc32

    CRC原理 基本概念 CRC(Cyclic Redundancy Check)中文名是循环冗余校验,其计算简单,被...

  • CRC校验原理

    CRC校验用于检验数据传输过程中数据是否有错误。CRC的错误检测能力依赖于关键多项式的阶次以及所使用的特定关键多项...

  • CRC校验

    1. CRC校验原理 CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的。其...

  • CRC校验

    1. CRC校验原理 [https://s4.51cto.com/attachment/201211/160713...

  • CRC的校验原理

    一、基本原理 CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总...

  • 硬件连接-CRC32

    一,iOS CRC32校验 项目中用到蓝牙,遇到了CRC32校验失败; CRC校验失败的原因: 1,发的固件是空的...

  • CRC全套算法 CRC4,CRC5,CRC7,CRC8,CRC1

    出处-->全套CRC校验

  • CRC

    校验原理 循环校验码(CRC 码):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任...

  • iOS CRC16 校验码

    CRC 在线校验地址:https://www.lammertbies.nl/comm/info/crc-calcu...

  • MySQL crc32 & crc64函数 提高字符串查询效率

    一、概念:CRC全称为Cyclic Redundancy Check,又叫循环冗余校验。CRC32是CRC算法的一...

网友评论

      本文标题:CRC校验原理

      本文链接:https://www.haomeiwen.com/subject/tuqdtqtx.html