CRC-8 & CRC-16
CRC - Cyclic Redundancy Check is widely used in data transition. According to wikipedia.org
, A CRC-enabled device calculates a short, fixed-length binary sequence, known as the check value or CRC, for each block of data to be sent or stored and appends it to the data, forming a codeword.
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.
It's really hard to calculate CRC value by hand, so we add CRC8 & CRC16 algorithm in MTools. And this can really save your time to get the CRC values by one expression. Notice: This is the feature from the full version.
Byte values
There exist 16 bytes on each block of the Mifare 1k card.
And you can use b0
b1
b2
... b14
b15
for calculation.
CRC-8
The value of the CRC-8 result is only 1 byte. Supported CRC8 algorithm in MTools.
Algorithm
Expression
Value
CRC-8
crc8(0,1,5,8)
CRC8 of HEX String of b0
b1
b5
b8
CRC-8/CDMA2000
crc8cdma2000(0:14)
CRC8-/CDMA2000 of b0
to b14
CRC-8/DARC
crc8darc(0:14)
idem
CRC-8/DVB-S2
crc8dvs2(0:14)
idem
CRC-8/EBU
crc8eu(0:14)
idem
CRC-8/I-CODE
crc8icode(0:14)
idem
CRC-8/ITU
crc8itu(0:14)
idem
CRC-8/MAXIM
crc8maxim(0:14)
idem
CRC-8/ROHC
crc8rohc(0:14)
idem
CRC-8/WCDMA
crc8wcdma(0:14)
idem
CRC-16
The value of CRC16 contains 2 bytes.
To get these two separately, 0
or 1
need to be added after the expression.
Supported CRC16 algorithm in MTools.
Algorithm
Expression 0
Expression 1
Xor Value
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)
CRC-8 / CRC16 in Sniffer
The expression of the last byte b15
is CRC-8/MAXIM
, and the results are calculated correctly in a second.
Last updated