ip33.com,crc8

CRC校验的最底层原理是什么?

ip33.com,crc8


CRC最基础的运算就是移位运算和异或运算 。由于硬件可以完成CRC运算,即固化CRC算法,故实际运算又被分成左移或右移运算,即CRC成员中的“CRC方向” 。CRC的成员有:CRCn:常见的有CRC4,CRC8,CRC16,CRC32,CRC64 。权值:即多项式poly,它是CRC运算中的“密钥”,即算法的核心 。
由于上面说过CRC算法分为左移或右移运算,故当左移运算时,权值的最低位D0为“1”时,CRC可逆,否则CRC不可逆 。当右移运算时,权值的最高位Dn-1为“1”时,CRC可逆 。否则CRC不可逆 。通俗地说,多项式中含“ 1”或“ X0”时,CRC可逆 。否则CRC不可逆 。CRC方向:开始已经论述,分为左移或右移运算 。
CRC初值:即CRC运算的初始值init,它只对第一个CRC待校验数据作用,并与其满足交换律 。CRC出值:即CRC运算过程结束后,它对最后一个运算过程的中间结果异或后的输出值xorout 。CRC结果:即CRC运算的最终校验和 。CRC表格:与CRC初值或CRC出值无关,并对连续的待校验数据(例如00-0xFF)进行CRC运算的校验和结果流 。
CRC简写式:它包含了CRCn,CRC权值,CRC方向,CRC初值和CRC出值 。它是CRC运算中最为完整的表述 。CRC算法:它至少有五种算法:1.CRC移位算法 。它没有CRC表格,主要是对CRC权值的移位和异或运算,故相对速度最慢 。2.CRC大表和单表算法,其中大表内有256个查表数据单元 。只有一个CRC表格 。
3.CRC小表和单表算法,其中小表内只有16个查表数据单元 。只有一个CRC表格 。它比大表算法慢一倍 。4.CRC大表和双表组合算法,它比算法2多了一个CRC表格,但数据宽度降低一倍,运算速度比算法2稍慢 。它是低位数MCU的最佳选择 。5.CRC小表和双表组合算法,它比算法3多了一个CRC表格,但数据宽度降低一倍,运算速度比算法3稍慢 。
超级CRC计算器HotCRC中的CRC出值碰撞有什么用途?
ip33.com,crc8


HotCRC计算器中的初值碰撞应用相对出值碰撞保护版权信息要小的多 。CRC初值碰撞是在明文不变,结果不变,指定CRC初值后,“正运算”出CRC出值 。它的应用主要是设定初值和出值都不为特定值的CRC简写式 。特别是在明文不等长且明文长度不是权值长度的整数倍时,该不为特定值的这组初值和出值将是唯一的,故此时的CRC主要成员都是CRC密钥了,例如逆向CRC8,需要穷举:权值(256次)*方向(2次)*初值(256次)*出值(256次)故当CRCn中的n足够大时,其CRC算法非常难以逆向或无法破逆向 。
超级CRC计算器HotCRC中的CRC简写式比CRC多项式表述更清晰吗?为什么?
ip33.com,crc8


【ip33.com,crc8】CRC最基础的运算就是移位运算和异或运算 。CRC多项式(poly)即CRC权值或CRC表格,它是CRC运算中的“密钥”,即算法的核心 。CRC表格与CRC初值或CRC出值无关 。故CRC多项式无法包含CRC运算中的重要信息 。CRC简写式它包含了CRCn,CRC权值,CRC方向,CRC初值和CRC出值 。它是CRC运算中最为完整的表述 。
其中:CRCn常见的有CRC4,CRC8,CRC16,CRC32,CRC64等常用CRC 。CRC方向,由于硬件可以完成CRC运算,即固化CRC算法,故实际运算又被分成左移或右移运算 。故CRC简写式是最佳的CRC表述方法 。例如:CRC16L_1021_FFFF_0000 。它表示算法为CRC16中的CCITT,左移算法,权值即多项式为0x1021,初值为0xFFFF,出值为0x0000 。

    推荐阅读