crc校验

发布于:2024-04-03 ⋅ 阅读:(186) ⋅ 点赞:(0)

CRC(Cyclic Redundancy Check),即循环冗余校验

理论知识

一个视频看懂CRC校验_哔哩哔哩_bilibili 

crc校验详解_12694841的技术博客_51CTO博客

crc的原理

基本原理:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式

校验码的具体生成过程为:假设要发送的信息用多项式C(X)表示,将C(x)左移R位(可表示成C(x)*2^{R}),这样C(x)的右边就会空出R位,这就是校验码的位置。用 C(x)*2^{R} 除以生成多项式G(x)得到的余数就是校验码。

模2运算

模2运算 / 模2算法(模2加法、模2减法、模2乘法、模2除法)-CSDN博客

本质是异或运算,且不考虑进位和借位。

模2减法

0-0=0   0-1=1   1-0=1   1-1=0

模2除法

被除数位数足够,即位数 ≥ 除数位数,则商对应写1,不够则商对应写0。

CRC校验步骤

CRC算法名称 多项式公式 宽度 多项式 初始值 结果异或值 输入反转 输出反转
CRC-4/ITU x4 + x + 1 4 03 00 00 true true
  1. 选择多项式作为除数
  2. 需要输入数据反转时,数据高低位反转
  3. 被除数(要校验的数据)先补0,补0个数由宽度决定
  4. 补0后的数减去初始值才是真正的被除数
  5. 进行模2除法
  6. 得到的结果与异或值异或
  7. 需要输出反转时,结果要高低位反转。最终得到校验值

 例子1:CRC-5/EPC

 例子2:

常见crc模型

CRC算法名称 多项式公式 宽度 多项式 初始值 结果异或值 输入反转 输出反转
CRC-4/ITU x4 + x + 1 4 03 00 00 true true
CRC-5/EPC x5 + x3 + 1 5 09 09 00 false false
CRC-5/ITU x5 + x4 + x2 + 1 5 15 00 00 true true
CRC-5/USB x5 + x2 + 1 5 05 1F 1F true true
CRC-6/ITU x6 + x + 1 6 03 00 00 true true
CRC-7/MMC x7 + x3 + 1 7 09 00 00 false false
CRC-8 x8 + x2 + x + 1 8 07 00 00 false false
CRC-8/ITU x8 + x2 + x + 1 8 07 00 55 false false
CRC-8/ROHC x8 + x2 + x + 1 8 07 FF 00 true true
CRC-8/MAXIM x8 + x5 + x4 + 1 8 31 00 00 true true
CRC-16/IBM x16 + x15 + x2 + 1 16 8005 0000 0000 true true
CRC-16/MAXIM x16 + x15 + x2 + 1 16 8005 0000 FFFF true true
CRC-16/USB x16 + x15 + x2 + 1 16 8005 FFFF FFFF true true
CRC-16/MODBUS x16 + x15 + x2 + 1 16 8005 FFFF 0000 true true
CRC-16/CCITT x16 + x12 + x5 + 1 16 1021 0000 0000 true true
CRC-16/CCITT-FALSE x16 + x12 + x5 + 1 16 1021 FFFF 0000 false false
CRC-16/X25 x16 + x12 + x5 + 1 16 1021 FFFF FFFF true true
CRC-16/XMODEM x16 + x12 + x5 + 1 16 1021 0000 0000 false false
CRC-16/DNP x16 + x13 + x12 + x11 + x10 + x8 + x6 + x5 + x2 + 1 16 3D65 0000 FFFF true true
CRC-32 x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1 32 04C11DB7 FFFFFFFF FFFFFFFF true true
CRC-32/MPEG-2 x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1 32 04C11DB7 FFFFFFFF 00000000 false false

CRC(循环冗余校验)在线计算_ip33.com

https://gitee.com/Ging_H/crc_calculation_tools.git


网站公告

今日签到

点亮在社区的每一天
去签到