计算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-16 校验

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

在嗅探中的应用

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

Last updated