软考
APP下载

crc校验位计算公式

CRC(Cyclic Redundancy Check,循环冗余校验)校验位是在计算机通信过程中广泛用于数据完整性校验的一种校验方式。在以太网、串行通信、CD-ROM存储器、ZIP文件等领域被广泛应用。

一、CRC校验原理

CRC校验是采用模运算的原理实现的,它把校验数据(可以是字节、字或者位)看成一个二进制多项式,使用生成多项式对数据进行除法。具体而言,CRC发送端和接收端采用相同的生成多项式,并进行余数检验,校验码即为余数。通过余数的校验,可以达到检测出数据传送过程中可能产生的插入、删除、失真等错误的目的。

二、CRC算法分类

CRC校验算法可分为两类:线性和非线性。线性CRC算法又可分为自换码(systematic)和非自换码(nonsystematic),非线性CRC算法又可分为密码学CRC和非密码学CRC。

自换码CRC:产生的校验码与待校验数据连接在一起构成了一个新的序列,序列结果是一个矩阵。

非自换码CRC:产生的校验码不是待校验数据的函数。在发送方,待校验数据和校验码分别发送过去,在接收方,两者分别接收到,通过计算判断数据是否有误。

密码学CRC:通过改变计算方式,增强CRC算法的抗攻击性,防止数据信息受到抵赖攻击和篡改。

非密码学CRC:主要应用于检验数据流中的错误,是通用的,可靠的检验码算法。

三、CRC算法的应用

CRC校验广泛应用于计算机通信、数据传输、数据存储等领域,如以太网协议中用于局域网的数据传输,CD-ROM数据读取过程中的数据检验等。

四、CRC校验位计算公式

CRC校验位计算公式的选择与生成多项式的不同相关,常用的生成多项式有CRC-8、CRC-16、CRC-32等多种,每种生成多项式对应不同的公式。以CRC-32为例,其生成多项式为x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1,对应的校验位计算公式为:

1. 将待校验数据左移n位(n为生成多项式的位数-1)

2. 将移位后的数据除以生成多项式

3. 取余数作为校验位

备考资料 免费领取:软件设计师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
软件设计师题库