安全基础学习-CRC理解与计算

由于一些任务要求需要了解CRC校验,于是来学习一下。
新人学习,大佬绕路。

前言

CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
在这里插入图片描述

CRC 的步骤大致如下:

  1. 选择多项式:选择一个预定义的多项式作为生成器。不同的应用和标准会使用不同的多项式。
  2. 初始化寄存器:设置 CRC 计算的初始值,通常是全 1 或全 0。
  3. 逐位处理数据:将数据分成多个位进行处理,计算时使用生成多项式。
  4. 计算结果:最终得到的结果就是 CRC 校验码。
    CRC 具有很强的错误检测能力,能检测到常见的错误类型,如单比特错误、双比特错误、突发错误等。常见的 CRC 标准包括 CRC-16、CRC-32 等。

1、多项式表示

使用多项式来进行 CRC 计算的原因在于它能够很好地表示和处理二进制数据,同时提供了强大的数学工具来检测错误。多项式对应二进制的方式很直观,每一位二进制数都对应多项式的一个系数。

1.1 多项式与二进制的对应关系

多项式的每一个系数对应二进制数的每一位。

例如:
多项式 x3+x+1对应二进制 1011
x3对应二进制的最高位 1
x2 对应二进制的次高位 0(因为没有 x2项)
x1 对应二进制的次低位 1
x0 对应二进制的最低位 1

2.数据扩展

我们需要在数据后面附加与多项式阶数相同数量的零。因为多项式是三阶(最高次项是 x3),我们在数据后面加 3 个零:

1101 -> 1101 000

3.开始二进制除法

3.1 二进制除法与异或的关系

二进制除法在 CRC 计算中的实现本质上是通过异或运算来完成的,也有的地方叫做模2除法。

异或运算
异或运算的规则是:

如果两个位相同,则结果为0。
如果两个位不同,则结果为1。

3.2 具体步骤

在 CRC 计算中,二进制除法的步骤可以用异或运算来模拟。具体来说,当我们使用一个多项式(如 x3+x+1)去除一个二进制数据时,实际上我们是在执行一个逐位的异或运算。

3.2.1初始数据准备

原数据:1101
多项式:1011
新数据(在数据后面附加三个零):1101000

3.2.2 逐步计算过程

在这里插入图片描述
其他数据更复杂的计算举例
在这里插入图片描述
校验码为0b0001.

3.2.3校验码

0b0001

3.2.4信息码

0b1101001

3.2.5 详细总结:

  1. 数据扩展:在数据后面加上与多项式阶数相同数量的零。
  2. 对齐与异或:将数据的前几位与多项式对齐,进行异或运算,得到新结果。
  3. 重复步骤:将新的结果继续与多项式对齐,进行异或,直到数据处理完毕。
  4. 得到校验码:剩下的部分就是 CRC 校验码,位数与扩展保持一致。
  5. 得到信息码:将校验码添加到初始数据后可得到信息码。
    这种方法通过二进制除法来检测数据传输或存储中的错误,可以检测到常见的错误类型。实际应用中使用的多项式和数据长度会更复杂,但基本过程是一样的。

4.数据验证

用收到的信息码与除数做异或,余数为0,则说明收到的数据正确。
在这里插入图片描述

5.参数模型

CRC算法参数模型解释:

  • NAME:参数模型名称。
  • WIDTH:宽度,即CRC比特数。
  • POLY:生成项的简写,以16进制表示。例如:CRC-32即是0x04C11DB7,忽略了最高位的"1",即完整的生成项是0x104C11DB7。
  • INIT:这是算法开始时寄存器(crc)的初始化预置值,十六进制表示。
  • REFIN:待测数据的每个字节是否按位反转,True或False。
  • REFOUT:在计算后之后,异或输出之前,整个数据是否按位反转,True或False。
  • XOROUT:计算结果与此参数异或后得到最终的CRC值。
    在这里插入图片描述

参考链接

CRC参考链接1
CRC参考链接2
CRC参考链家3
CRC参考链接4
CRC参考链接5

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值