计算CRC-8 / CRC-16

CRC - 循环冗余校验广泛用于数据传输。 根据 wikipedia.org 的描述,启用 CRC 的设备为要发送或存储的每个数据块计算一个短的、固定长度的二进制序列,称为校验值或 CRC,并将其附加到数据中,形成一个代码字。

When a codeword is received or read, the device either compares its check value with one freshly calculated from the data block, or equivalently, performs a CRC on the whole codeword and compares the resulting check value with an expected residue constant. If the CRC values do not match, then the block contains a data error.

译文:当接收或读取代码字时,设备要么将其校验值与从数据块中新计算出的校验值进行比较,要么等效地对整个代码字执行 CRC,并将结果校验值与预期的剩余常数进行比较。 如果 CRC 值不匹配,则块包含数据错误。

手动计算CRC值真的很难且浪费时间,因此我们在MTools中添加了CRC8 & CRC16算法。 这确实可以节省您通过一个表达式获取 CRC 值的时间。

注意:这是一个完整版的付费特性。

字节变量

Mifare 1K 卡片的每一块中包含 16 个字节,可以使用b0 b1 b2 ... b14 b15 作为每一字节变量。

CRC-8 校验

CRC-8的校验值只有一个字节,MTools支持的CRC-8算法如下:

算法

表达式

运算结果

CRC-8

crc8(0,1,5,8)

b0 b1 b5 b8的CRC-8校验值

CRC-8/CDMA2000

crc8cdma2000(0:14)

b0b14 的CRC-8/CDMA2000校验值

CRC-8/DARC

crc8darc(0:14)

参考上一条

CRC-8/DVB-S2

crc8dvs2(0:14)

参考上一条

CRC-8/EBU

crc8eu(0:14)

参考上一条

CRC-8/I-CODE

crc8icode(0:14)

参考上一条

CRC-8/ITU

crc8itu(0:14)

参考上一条

CRC-8/MAXIM

crc8maxim(0:14)

参考上一条

CRC-8/ROHC

crc8rohc(0:14)

参考上一条

CRC-8/WCDMA

crc8wcdma(0:14)

参考上一条

CRC-16 校验

CRC-16的校验值有两个字节。通过在表达式后加0或1,可以分布获得两个字节的值,MTools支持的CRC-16算法如下:

算法

表达式 0

表达式 1

两字节异或值

CRC-16/CCITT-FALSE

crc16ccittfalse(0:14)0

crc16ccittfalse(0:14)1

crc16ccittfalse(0:14)

CRC-16/ARC

crc16arc(0:14)0

crc16arc(0:14)1

crc16arc(0:14)

CRC-16/AUG-CCITT

crc16augccitt(0:14)0

crc16augccitt(0:14)1

crc16augccitt(0:14)

CRC-16/BUYPASS

crc16buypass(0:14)0

crc16buypass(0:14)1

crc16buypass(0:14)

CRC-16/CDMA2000

crc16cdma2000(0:14)0

crc16cdma2000(0:14)1

crc16cdma2000(0:14)

CRC-16/DDS-110

crc16dds110(0:14)0

crc16dds110(0:14)1

crc16dds110(0:14)

CRC-16/DECT-R

crc16dectr(0:14)0

crc16dectr(0:14)1

crc16dectr(0:14)

CRC-16/DECT-X

crc16dectx(0:14)0

crc16dectx(0:14)1

crc16dectx(0:14)

CRC-16/DNP

crc16dnp(0:14)0

crc16dnp(0:14)1

crc16dnp(0:14)

CRC-16/EN-13757

crc16en13757(0:14)0

crc16en13757(0:14)1

crc16en13757(0:14)

CRC-16/GENIBUS

crc16genibus(0:14)0

crc16genibus(0:14)1

crc16genibus(0:14)

CRC-16/MAXIM

crc16maxim(0:14)0

crc16maxim(0:14)1

crc16maxim(0:14)

CRC-16/MCRF4XX

crc16mcrf4xx(0:14)0

crc16mcrf4xx(0:14)1

crc16mcrf4xx(0:14)

CRC-16/RIELLO

crc16riello(0:14)0

crc16riello(0:14)1

crc16riello(0:14)

CRC-16/T10-DIF

crc16t10dif(0:14)0

crc16t10dif(0:14)1

crc16t10dif(0:14)

CRC-16/TELEDISK

crc16teledisk(0:14)0

crc16teledisk(0:14)1

crc16teledisk(0:14)

CRC-16/TMS37157

crc16tms37157(0:14)0

crc16tms37157(0:14)1

crc16tms37157(0:14)

CRC-16/USB

crc16usb(0:14)0

crc16usb(0:14)1

crc16usb(0:14)

CRC-A

crc16a(0:14)0

crc16a(0:14)1

crc16a(0:14)

CRC-16/KERMIT

crc16kermit(0:14)0

crc16kermit(0:14)1

crc16kermit(0:14)

CRC-16/MODBUS

crc16modbus(0:14)0

crc16modbus(0:14)1

crc16modbus(0:14)

CRC-16/X-25

crc16x25(0:14)0

crc16x25(0:14)1

crc16x25(0:14)

CRC-16/XMODEM

crc16xmodem(0:14)0

crc16xmodem(0:14)1

crc16xmodem(0:14)

在嗅探中的应用

最后一个字节b15的计算方法为CRC-8/MAXIM,结果在一秒内可计算得出。

最后更新于