crcmod.predefined
– CRC calculation using predefined algorithms¶
This module provides a function factory mkPredefinedCrcFun()
and a class PredefinedCrc
for calculating CRCs of byte strings using common predefined CRC algorithms.
The function factory and the class are very similar to those defined in crcmod
,
except that the CRC algorithm is specified by a predefined name, rather than the
individual polynomial, reflection, and initial and final-XOR parameters.
Predefined CRC algorithms¶
The crcmod.predefined
module offers the following predefined algorithms:
Name | Polynomial | Reversed? | Init-value | XOR-out | Check |
---|---|---|---|---|---|
crc-8 |
0x107 | False | 0x00 | 0x00 | 0xF4 |
crc-8-darc |
0x139 | True | 0x00 | 0x00 | 0x15 |
crc-8-i-code |
0x11D | False | 0xFD | 0x00 | 0x7E |
crc-8-itu |
0x107 | False | 0x55 | 0x55 | 0xA1 |
crc-8-maxim |
0x131 | True | 0x00 | 0x00 | 0xA1 |
crc-8-rohc |
0x107 | True | 0xFF | 0x00 | 0xD0 |
crc-8-wcdma |
0x19B | True | 0x00 | 0x00 | 0x25 |
crc-16 |
0x18005 | True | 0x0000 | 0x0000 | 0xBB3D |
crc-16-buypass |
0x18005 | False | 0x0000 | 0x0000 | 0xFEE8 |
crc-16-dds-110 |
0x18005 | False | 0x800D | 0x0000 | 0x9ECF |
crc-16-dect |
0x10589 | False | 0x0001 | 0x0001 | 0x007E |
crc-16-dnp |
0x13D65 | True | 0xFFFF | 0xFFFF | 0xEA82 |
crc-16-en-13757 |
0x13D65 | False | 0xFFFF | 0xFFFF | 0xC2B7 |
crc-16-genibus |
0x11021 | False | 0x0000 | 0xFFFF | 0xD64E |
crc-16-maxim |
0x18005 | True | 0xFFFF | 0xFFFF | 0x44C2 |
crc-16-mcrf4xx |
0x11021 | True | 0xFFFF | 0x0000 | 0x6F91 |
crc-16-riello |
0x11021 | True | 0x554D | 0x0000 | 0x63D0 |
crc-16-t10-dif |
0x18BB7 | False | 0x0000 | 0x0000 | 0xD0DB |
crc-16-teledisk |
0x1A097 | False | 0x0000 | 0x0000 | 0x0FB3 |
crc-16-usb |
0x18005 | True | 0x0000 | 0xFFFF | 0xB4C8 |
x-25 |
0x11021 | True | 0x0000 | 0xFFFF | 0x906E |
xmodem |
0x11021 | False | 0x0000 | 0x0000 | 0x31C3 |
modbus |
0x18005 | True | 0xFFFF | 0x0000 | 0x4B37 |
kermit [1] |
0x11021 | True | 0x0000 | 0x0000 | 0x2189 |
crc-ccitt-false [1] |
0x11021 | False | 0xFFFF | 0x0000 | 0x29B1 |
crc-aug-ccitt [1] |
0x11021 | False | 0x1D0F | 0x0000 | 0xE5CC |
crc-24 |
0x1864CFB | False | 0xB704CE | 0x000000 | 0x21CF02 |
crc-24-flexray-a |
0x15D6DCB | False | 0xFEDCBA | 0x000000 | 0x7979BD |
crc-24-flexray-b |
0x15D6DCB | False | 0xABCDEF | 0x000000 | 0x1F23B8 |
crc-32 |
0x104C11DB7 | True | 0x00000000 | 0xFFFFFFFF | 0xCBF43926 |
crc-32-bzip2 |
0x104C11DB7 | False | 0x00000000 | 0xFFFFFFFF | 0xFC891918 |
crc-32c |
0x11EDC6F41 | True | 0x00000000 | 0xFFFFFFFF | 0xE3069283 |
crc-32d |
0x1A833982B | True | 0x00000000 | 0xFFFFFFFF | 0x87315576 |
crc-32-mpeg |
0x104C11DB7 | False | 0xFFFFFFFF | 0x00000000 | 0x0376E6E7 |
posix |
0x104C11DB7 | False | 0xFFFFFFFF | 0xFFFFFFFF | 0x765E7680 |
crc-32q |
0x1814141AB | False | 0x00000000 | 0x00000000 | 0x3010BF7F |
jamcrc |
0x104C11DB7 | True | 0xFFFFFFFF | 0x00000000 | 0x340BC6D9 |
xfer |
0x1000000AF | False | 0x00000000 | 0x00000000 | 0xBD0BE338 |
crc-64 |
0x1000000000000001B | True | 0x0000000000000000 | 0x0000000000000000 | 0x46A5A9388A5BEFFE |
crc-64-we |
0x142F0E1EBA9EA3693 | False | 0x0000000000000000 | 0xFFFFFFFFFFFFFFFF | 0x62EC59E3F1A4F00A |
crc-64-jones |
0x1AD93D23594C935A9 | True | 0xFFFFFFFFFFFFFFFF | 0x0000000000000000 | 0xCAA717168609F281 |
Notes
[1] | (1, 2, 3) Definitions of CCITT are disputable. See: |
mkPredefinedCrcFun()
– CRC function factory¶
The function factory provides a simple interface for CRC calculation. It is similar
to crcmod.mkCrcFun()
, except that it specifies a CRC algorithm by name rather
than its parameters.
-
crcmod.predefined.
mkPredefinedCrcFun
(crc_name)¶ Function factory that returns a new function for calculating CRCs using a specified CRC algorithm.
Parameters: crc_name (string) – The name of the predefined CRC algorithm to use. Returns: CRC calculation function Return type: function The function that is returned is the same as that returned by
crcmod.mkCrcFun()
:-
.
crc_function
(data[, crc=initCrc])¶
Parameters: - data (byte string) – Data for which to calculate the CRC.
- crc – Initial CRC value.
Returns: Calculated CRC value.
Return type: integer
-
-
crcmod.predefined.
mkCrcFun
(crc_name)¶ This is an alias for
crcmod.predefined.mkPredefinedCrcFun()
. However, it is not defined whencrcmod.predefined
is imported using the form:>>> from crcmod.predefined import *
Examples¶
CRC-32 example:
>>> import crcmod.predefined
>>> crc32_func = crcmod.predefined.mkCrcFun('crc-32')
>>> hex(crc32_func('123456789'))
'0xcbf43926L'
XMODEM example:
>>> xmodem_crc_func = crcmod.predefined.mkCrcFun('xmodem')
>>> hex(xmodem_crc_func('123456789'))
'0x31c3'
Class PredefinedCrc
¶
This class is inherited from the crcmod.Crc
class, and is the same except for the
initialization. It specifies a CRC algorithm by name rather than its parameters.
-
class
crcmod.predefined.
PredefinedCrc
(crc_name)¶ Returns a new
Crc
object for calculating CRCs using a specified CRC algorithm.The parameter is the same as that for the factory function
crcmod.predefined.mkPredefinedCrcFun()
.Parameters: crc_name (string) – The name of the predefined CRC algorithm to use.
-
class
crcmod.predefined.
Crc
(poly[, initCrc, rev, xorOut])¶ This is an alias for
crcmod.predefined.PredefinedCrc
. However, it is not defined whencrcmod.predefined
is imported using the form:>>> from crcmod.predefined import *
Examples¶
CRC-32 Example:
>>> import crcmod.predefined
>>> crc32 = crcmod.predefined.Crc('crc-32')
>>> crc32.update('123456789')
>>> hex(crc32.crcValue)
'0xcbf43926L'
>>> crc32.hexdigest()
'CBF43926'