crcmod.predefined – CRC calculation using predefined algorithms — crcmod v1.7 documentation

### Navigation

- index
- modules |
- previous |
- crcmod v1.7 documentation »

# `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: http://homepages.tesco.net/~rainstorm/crc-catalogue.htm http://web.archive.org/web/20071229021252/http://www.joegeluso.com/software/articles/ccitt.htm

## `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.

  Parameter: | 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()`.

  Parameter: | 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'

### Navigation

- index
- modules |
- previous |
- crcmod v1.7 documentation »