crc校验

2024-04-03 01:20
文章标签 校验 crc

本文主要是介绍crc校验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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/ITUx4 + x + 14030000truetrue
  1. 选择多项式作为除数
  2. 需要输入数据反转时,数据高低位反转
  3. 被除数(要校验的数据)先补0,补0个数由宽度决定
  4. 补0后的数减去初始值才是真正的被除数
  5. 进行模2除法
  6. 得到的结果与异或值异或
  7. 需要输出反转时,结果要高低位反转。最终得到校验值

 例子1:CRC-5/EPC

 例子2:

常见crc模型

CRC算法名称多项式公式宽度多项式初始值结果异或值输入反转输出反转
CRC-4/ITUx4 + x + 14030000truetrue
CRC-5/EPCx5 + x3 + 15090900falsefalse
CRC-5/ITUx5 + x4 + x2 + 15150000truetrue
CRC-5/USBx5 + x2 + 15051F1Ftruetrue
CRC-6/ITUx6 + x + 16030000truetrue
CRC-7/MMCx7 + x3 + 17090000falsefalse
CRC-8x8 + x2 + x + 18070000falsefalse
CRC-8/ITUx8 + x2 + x + 18070055falsefalse
CRC-8/ROHCx8 + x2 + x + 1807FF00truetrue
CRC-8/MAXIMx8 + x5 + x4 + 18310000truetrue
CRC-16/IBMx16 + x15 + x2 + 116800500000000truetrue
CRC-16/MAXIMx16 + x15 + x2 + 11680050000FFFFtruetrue
CRC-16/USBx16 + x15 + x2 + 1168005FFFFFFFFtruetrue
CRC-16/MODBUSx16 + x15 + x2 + 1168005FFFF0000truetrue
CRC-16/CCITTx16 + x12 + x5 + 116102100000000truetrue
CRC-16/CCITT-FALSEx16 + x12 + x5 + 1161021FFFF0000falsefalse
CRC-16/X25x16 + x12 + x5 + 1161021FFFFFFFFtruetrue
CRC-16/XMODEMx16 + x12 + x5 + 116102100000000falsefalse
CRC-16/DNPx16 + x13 + x12 + x11 + x10 + x8 + x6 + x5 + x2 + 1163D650000FFFFtruetrue
CRC-32x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 13204C11DB7FFFFFFFFFFFFFFFFtruetrue
CRC-32/MPEG-2x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 13204C11DB7FFFFFFFF00000000falsefalse

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

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

这篇关于crc校验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871563

相关文章

Android 二维码、条形码(识别率校验)

ZxingCode 以core-3.4.jar为基础构建,具有如下功能: 1.创建条形码、二维码; 2.相机扫描条形码、二维码; 3.读取照片条形码、二维码; 4.识别率算法修改提升; 5.扫码View背景颜色可修改; FIX-2022.5.12.1 1.新增手电筒开关调用方法; 2.新增暂停解码方法; 3.新增恢复解码方法; 4.虚拟机扫码崩溃; 5.OnScanCodeListener统

金蝶盘点机金蝶PDA外购入库单校验防止收错货实现商品品种和数量校验

采购入库单校验 单据校验,是在电脑上已经存在这个单据,然后对商品实物跟单据进行核对,校验品种和数量。 传统的【采购入库单】校验方式是,供应商送货来,仓管员拿着纸质的【采购入库单】清点商品数量, 并一行行的记录商品数量,这个过程如果商品品种几十种,几百种,就很容核对错误,而且费时费力,搞得头晕眼花,工作强度比较大,对仓管员的责任心和细心程度要求比较高。 如果使用盘点机PDA进行【采购入库

注解+反射 参数校验更加简洁

背景 做RPC接口的时候 我们需要对一些字段做非空校验 在字段很多的情况下 如果一个一个的用if判断 代码会很恶心 所以我们需要有一种便捷的方式去实现这个功能 比如使用注解+反射的方式 怎么做? 首先定义注解 非空注解: package com.api.annotation;import java.lang.annotation.*;/*** 非空校验注解*/@Target({Elemen

Java中的标准注解与数据校验:深入解析与实例

目录 Java中的标准注解与数据校验:深入解析与实例1. 基础校验注解`@NonNull``@NotBlank``@Size` 2. 数值校验注解`@Min` & `@Max``@Positive` & `@Negative` 3. 枚举与模式匹配自定义注解示例(概念性展示) 4. 自定义校验逻辑结论 Java中的标准注解与数据校验:深入解析与实例 在Java开发中,注解(An

APK签名校验绕过

将APK重命名为zip文件,然后可以看到有个META-INF的文件夹,里面有三个文件,分别名为MANIFEST.MF、CERT.SF和CERT.RSA,这些就是使用signapk.jar生成的签名文件。 1、 MANIFEST.MF文件: 程序遍历update.apk包中的所有文件(entry),对非文件夹非签名文件的文件,逐个生成SHA1的数字签名信息,再用Base64进行编码。具体代

java 日期校验yyyymmdd

package com.wl.cigrec.util;public class DateUtil {/*** 判断参数的格式是否为“yyyyMMdd”格式的合法日期字符串* * @author Liang.Wang* @since 02/24/15* @param str* @return true/false*/public static boolean isValidDate(String s

Android正则校验手机号码

不多说了直接上校验方法 /** * 验证手机号码 * 正确返回true,错误返回false * @param mobiles * @return [0-9]{5,9} */ public static boolean isMobileNO(String mobiles) { Pattern p = Pattern .compile("^((13[0-9]

【CRC笔记】CRC-32 ISO-HDLC C语言实现

CRC笔记 CRC-32/ISO-HDLC 简介及C语言实现 一、CRC-32 ISO-HDLC算法简介二、CRC-32/ISO-HDLC算法基本信息三、CRC-32/ISO-HDLC算法的C语言实现1、查表法计算CRC-32/ISO-HDLC2、直接计算法计算CRC-32/ISO-HDLC3、测试程序 [参考资料] 一、CRC-32 ISO-HDLC算法简介 别名:CRC-32

【CRC笔记】CRC-8 SMBUS C语言实现

CRC笔记 CRC-8/SMBUS 简介及C语言实现 一、CRC-8 SMBUS算法简介二、CRC-8/SMBUS算法基本信息三、CRC-8/SMBUS算法的C语言实现1、查表法计算CRC-8/SMBUS2、直接计算法计算CRC-8/SMBUS3、测试程序 [参考资料] 一、CRC-8 SMBUS算法简介 别名:CRC-8 二、CRC-8/SMBUS算法基本信息 CRC算

使用 C# 进行 JSON 反序列化实体必填项校验(webform)

在使用 JSON 进行数据传输时,反序列化为实体对象是常见的操作。为了确保反序列化后的对象满足业务逻辑的要求,需要对实体对象的必填字段进行校验。本文将介绍如何在非 .NET Core MVC 项目中,使用 C# 和数据注解来进行 JSON 反序列化实体的必填项校验,并实现自定义校验方法。 实体类定义 首先,定义三个实体类:RootObject、Condition 和 RuleCombina