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 when crcmod.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 when crcmod.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'