Source code for crccheck.crc

""" Classes to calculate CRCs (Cyclic Redundancy Check).

  License::

    Copyright (C) 2015-2022 by Martin Scharrer <martin.scharrer@web.de>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

"""
from crccheck.base import CrccheckBase, reflectbitorder, REFLECT_BIT_ORDER_TABLE, CrccheckError


[docs]class CrcBase(CrccheckBase): """Abstract base class for all Cyclic Redundancy Checks (CRC) checksums""" _names = () _width = 0 _poly = 0x00 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = None _check_data = bytearray(b"123456789") _residue = None
[docs] def process(self, data): """ Process given data. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. Returns: self """ crc = self._value highbit = 1 << (self._width - 1) mask = ((highbit - 1) << 1) | 0x1 # done this way to avoid overrun for 64-bit values poly = self._poly shift = self._width - 8 diff8 = -shift if diff8 > 0: # enlarge temporary to fit 8-bit mask = 0xFF crc <<= diff8 shift = 0 highbit = 0x80 poly = self._poly << diff8 reflect = self._reflect_input for byte in data: if reflect: byte = REFLECT_BIT_ORDER_TABLE[byte] crc ^= (byte << shift) for i in range(0, 8): if crc & highbit: crc = (crc << 1) ^ poly else: crc = (crc << 1) crc &= mask if diff8 > 0: crc >>= diff8 self._value = crc return self
[docs] def final(self): """ Return final CRC value. Return: int: final CRC value """ crc = self._value if self._reflect_output: crc = reflectbitorder(self._width, crc) crc ^= self._xor_output return crc
def __eq__(self, other): return self._width == other._width and \ self._poly == other._poly and \ self._initvalue == other._initvalue and \ self._reflect_input == other._reflect_input and \ self._reflect_output == other._reflect_output and \ self._xor_output == other._xor_output def __repr__(self): residue = hex(self._residue) if self._residue is not None else 'None' check_result = hex(self._check_result) if self._check_result is not None else 'None' return ("Crc(width={:d}, poly=0x{:x}, initvalue=0x{:X}, reflect_input={!s:s}, reflect_output={!s:s}, " + "xor_output=0x{:x}, check_result={}, residue={})").format( self._width, self._poly, self._initvalue, self._reflect_input, self._reflect_output, self._xor_output, check_result, residue)
[docs]def find(classes=None, width=None, poly=None, initvalue=None, reflect_input=None, reflect_output=None, xor_output=None, check_result=None, residue=None): """Find CRC classes which the matching properties. Args: classes (None or list): List of classes to search in. If None the list ALLCRCCLASSES will be used. width (None or int): number of bits of the CRC classes to find poly (None or int): polygon to find initvalue (None or int): initvalue to find reflect_input (None or bool): reflect_input to find reflect_output (None or bool): reflect_output to find xor_output (None or int): xor_output to find check_result (None or int): check_result to find residue (None or int): residue to find Returns: List of CRC classes with the selected properties. Examples: Find all CRC16 classes: $ find(width=16) Find all CRC32 classes with all-1 init value and XOR output: $ find(width=32, initvalue=0xFFFF, xor_output=0xFFFF) """ found = list() if classes is None: classes = ALLCRCCLASSES for cls in classes: if width is not None and width != cls._width: continue if poly is not None and poly != cls._poly: continue if initvalue is not None and initvalue != cls._initvalue: continue if reflect_input is not None and reflect_input != cls._reflect_input: continue if reflect_output is not None and reflect_output != cls._reflect_output: continue if xor_output is not None and xor_output != cls._xor_output: continue if check_result is not None and check_result != cls._check_result: continue if residue is not None and residue != cls._residue: continue found.append(cls) return found
[docs]def identify(data, crc, width=None, classes=None, one=True): """ Identify the used CRC algorithm which was used to calculate the CRC from some data. This function can be used to identify a suitable CRC class if the exact CRC algorithm/parameters are not known, but a CRC value is known from some data. Note that this function can be quite time consuming on large data, especially if the given width is not known. Args: data (bytes): Data to compare with the `crc`. crc (int): Known CRC of the given `data`. width (int or None): Known bit width of given `crc`. Providing the width will speed up the identification of the CRC algorithm. classes (iterable or None): Listing of classes to check. If None then ALLCRCCLASSES is used. one (bool): If True then only the first found CRC class is retunred. Otherwise a list of all suitable CRC classes. Returns: If `one` is True: CRC class which instances produce the given CRC from the given data. If no CRC class could be found `None` is returned. If `one` is False: List of CRC classes which instances produce the given CRC from the given data. The list may be empty. """ if classes is None: classes = ALLCRCCLASSES if width is not None: classes = (cls for cls in classes if cls._width == width) found = [] for cls in classes: if cls().calc(data) == crc: if one: return cls found.append(cls) if one: return None return found
[docs]class Crc(CrcBase): """ Creates a new general (user-defined) CRC calculator instance. Arguments: width (int): bit width of CRC. poly (int): polynomial of CRC with the top bit omitted. initvalue (int): initial value of internal running CRC value. Usually either 0 or (1<<width)-1, i.e. "all-1s". reflect_input (bool): If true the bit order of the input bytes are reflected first. This is to calculate the CRC like least-significant bit first systems will do it. reflect_output (bool): If true the bit order of the calculation result will be reflected before the XOR output stage. xor_output (int): The result is bit-wise XOR-ed with this value. Usually 0 (value stays the same) or (1<<width)-1, i.e. "all-1s" (invert value). check_result (int): The expected result for the check input "123456789" (= [0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39]). This value is used for the selftest() method to verify proper operation. residue (int): The residue expected after calculating the CRC over the original data followed by the CRC of the original data. With initvalue=0 and xor_output=0 the residue calculates always to 0. """ _width = 0 _poly = 0x00 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = None _residue = None def __init__(self, width, poly, initvalue=0x00, reflect_input=False, reflect_output=False, xor_output=0x00, check_result=0x00, residue=0x00): super(Crc, self).__init__(initvalue) self._initvalue = int(initvalue) self._width = int(width) self._poly = int(poly) self._reflect_input = bool(reflect_input) self._reflect_output = bool(reflect_output) self._xor_output = int(xor_output) self._check_result = int(check_result) if check_result is not None else None self._residue = int(residue) if residue is not None else None
[docs] def calc(self, data, initvalue=None, **kwargs): """ Fully calculate CRC/checksum over given data. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. initvalue (int): Initial value. If None then the default value for the class is used. Return: int: final value """ self.reset() self.process(data) return self.final()
[docs] def calchex(self, data, initvalue=None, byteorder='big', **kwargs): """Fully calculate checksum over given data. Return result as hex string. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. initvalue (int): Initial value. If None then the default value for the class is used. byteorder ('big' or 'little'): order (endianness) of returned bytes. Return: str: final value as hex string without leading '0x'. """ self.reset() self.process(data) return self.finalhex(byteorder)
[docs] def calcbytes(self, data, initvalue=None, byteorder='big', **kwargs): """Fully calculate checksum over given data. Return result as bytearray. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. initvalue (int): Initial value. If None then the default value for the class is used. byteorder ('big' or 'little'): order (endianness) of returned bytes. Return: bytes: final value as bytes """ self.reset() self.process(data) return self.finalbytes(byteorder)
[docs] def selftest(self, data=None, expectedresult=None, **kwargs): if data is None: data = self._check_data expectedresult = self._check_result result = self.calc(data) if result != expectedresult: raise CrccheckError("{:s}: expected {:s}, got {:s}".format( self.__class__.__name__, hex(expectedresult), hex(result)))
[docs]class Crc8Base(CrcBase): """CRC-8. Has optimised code for 8-bit CRCs and is used as base class for all other CRC with this width. """ _width = 8 _poly = 0x07 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xF4
[docs] def process(self, data): """ Process given data. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. Returns: self """ crc = self._value reflect = self._reflect_input poly = self._poly for byte in data: if reflect: byte = REFLECT_BIT_ORDER_TABLE[byte] crc = crc ^ byte for i in range(0, 8): if crc & 0x80: crc = (crc << 1) ^ poly else: crc = (crc << 1) crc &= 0xFF self._value = crc return self
[docs]class Crc16Base(CrcBase): """CRC-16. Has optimised code for 16-bit CRCs and is used as base class for all other CRC with this width. """ _width = 16 _poly = 0x1021 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x31C3
[docs] def process(self, data): """ Process given data. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. Returns: self """ crc = self._value reflect = self._reflect_input poly = self._poly for byte in data: if reflect: byte = REFLECT_BIT_ORDER_TABLE[byte] crc ^= (byte << 8) for i in range(0, 8): if crc & 0x8000: crc = (crc << 1) ^ poly else: crc = (crc << 1) crc &= 0xFFFF self._value = crc return self
[docs]class Crc32Base(CrcBase): """CRC-32. Has optimised code for 32-bit CRCs and is used as base class for all other CRC with this width. """ _width = 32 _poly = 0x04C11DB7 _initvalue = 0xFFFFFFFF _reflect_input = True _reflect_output = True _xor_output = 0xFFFFFFFF _check_result = 0xCBF43926
[docs] def process(self, data): """ Process given data. Args: data (bytes, bytearray or list of ints [0-255]): input data to process. Returns: self """ crc = self._value reflect = self._reflect_input poly = self._poly for byte in data: if reflect: byte = REFLECT_BIT_ORDER_TABLE[byte] crc ^= (byte << 24) for i in range(0, 8): if crc & 0x80000000: crc = (crc << 1) ^ poly else: crc = (crc << 1) crc &= 0xFFFFFFFF self._value = crc return self
[docs]class Crc3Gsm(CrcBase): """CRC-3/GSM""" _names = ('CRC-3/GSM',) _width = 3 _poly = 0x3 _initvalue = 0x0 _reflect_input = False _reflect_output = False _xor_output = 0x7 _check_result = 0x4 _residue = 0x2
[docs]class Crc3Rohc(CrcBase): """CRC-3/ROHC""" _names = ('CRC-3/ROHC',) _width = 3 _poly = 0x3 _initvalue = 0x7 _reflect_input = True _reflect_output = True _xor_output = 0x0 _check_result = 0x6 _residue = 0x0
[docs]class Crc4G704(CrcBase): """CRC-4/G-704 Aliases: CRC-4/ITU """ _names = ('CRC-4/G-704', 'CRC-4/ITU') _width = 4 _poly = 0x3 _initvalue = 0x0 _reflect_input = True _reflect_output = True _xor_output = 0x0 _check_result = 0x7 _residue = 0x0
Crc4Itu = Crc4G704
[docs]class Crc4Interlaken(CrcBase): """CRC-4/INTERLAKEN""" _names = ('CRC-4/INTERLAKEN',) _width = 4 _poly = 0x3 _initvalue = 0xf _reflect_input = False _reflect_output = False _xor_output = 0xf _check_result = 0xb _residue = 0x2
[docs]class Crc5EpcC1G2(CrcBase): """CRC-5/EPC-C1G2 Aliases: CRC-5/EPC """ _names = ('CRC-5/EPC-C1G2', 'CRC-5/EPC') _width = 5 _poly = 0x09 _initvalue = 0x09 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x00 _residue = 0x00
Crc5Epc = Crc5EpcC1G2
[docs]class Crc5G704(CrcBase): """CRC-5/G-704 Aliases: CRC-5/ITU """ _names = ('CRC-5/G-704', 'CRC-5/ITU') _width = 5 _poly = 0x15 _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x07 _residue = 0x00
Crc5Itu = Crc5G704
[docs]class Crc5Usb(CrcBase): """CRC-5/USB""" _names = ('CRC-5/USB',) _width = 5 _poly = 0x05 _initvalue = 0x1f _reflect_input = True _reflect_output = True _xor_output = 0x1f _check_result = 0x19 _residue = 0x06
[docs]class Crc6Cdma2000A(CrcBase): """CRC-6/CDMA2000-A""" _names = ('CRC-6/CDMA2000-A',) _width = 6 _poly = 0x27 _initvalue = 0x3f _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x0d _residue = 0x00
[docs]class Crc6Cdma2000B(CrcBase): """CRC-6/CDMA2000-B""" _names = ('CRC-6/CDMA2000-B',) _width = 6 _poly = 0x07 _initvalue = 0x3f _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x3b _residue = 0x00
[docs]class Crc6Darc(CrcBase): """CRC-6/DARC""" _names = ('CRC-6/DARC',) _width = 6 _poly = 0x19 _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x26 _residue = 0x00
[docs]class Crc6G704(CrcBase): """CRC-6/G-704 Aliases: CRC-6/ITU """ _names = ('CRC-6/G-704', 'CRC-6/ITU') _width = 6 _poly = 0x03 _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x06 _residue = 0x00
Crc6Itu = Crc6G704
[docs]class Crc6Gsm(CrcBase): """CRC-6/GSM""" _names = ('CRC-6/GSM',) _width = 6 _poly = 0x2f _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x3f _check_result = 0x13 _residue = 0x3a
[docs]class Crc7Mmc(CrcBase): """CRC-7/MMC Aliases: CRC-7 """ _names = ('CRC-7/MMC', 'CRC-7') _width = 7 _poly = 0x09 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x75 _residue = 0x00
Crc7 = Crc7Mmc
[docs]class Crc7Rohc(CrcBase): """CRC-7/ROHC""" _names = ('CRC-7/ROHC',) _width = 7 _poly = 0x4f _initvalue = 0x7f _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x53 _residue = 0x00
[docs]class Crc7Umts(CrcBase): """CRC-7/UMTS""" _names = ('CRC-7/UMTS',) _width = 7 _poly = 0x45 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x61 _residue = 0x00
[docs]class Crc8Autosar(Crc8Base): """CRC-8/AUTOSAR""" _names = ('CRC-8/AUTOSAR',) _width = 8 _poly = 0x2f _initvalue = 0xff _reflect_input = False _reflect_output = False _xor_output = 0xff _check_result = 0xdf _residue = 0x42
[docs]class Crc8Bluetooth(Crc8Base): """CRC-8/BLUETOOTH""" _names = ('CRC-8/BLUETOOTH',) _width = 8 _poly = 0xa7 _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x26 _residue = 0x00
[docs]class Crc8Cdma2000(Crc8Base): """CRC-8/CDMA2000""" _names = ('CRC-8/CDMA2000',) _width = 8 _poly = 0x9b _initvalue = 0xff _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xda _residue = 0x00
[docs]class Crc8Darc(Crc8Base): """CRC-8/DARC""" _names = ('CRC-8/DARC',) _width = 8 _poly = 0x39 _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x15 _residue = 0x00
[docs]class Crc8DvbS2(Crc8Base): """CRC-8/DVB-S2""" _names = ('CRC-8/DVB-S2',) _width = 8 _poly = 0xd5 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xbc _residue = 0x00
[docs]class Crc8GsmA(Crc8Base): """CRC-8/GSM-A""" _names = ('CRC-8/GSM-A',) _width = 8 _poly = 0x1d _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x37 _residue = 0x00
[docs]class Crc8GsmB(Crc8Base): """CRC-8/GSM-B""" _names = ('CRC-8/GSM-B',) _width = 8 _poly = 0x49 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0xff _check_result = 0x94 _residue = 0x53
[docs]class Crc8Hitag(Crc8Base): """CRC-8/HITAG""" _names = ('CRC-8/HITAG',) _width = 8 _poly = 0x1d _initvalue = 0xff _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xb4 _residue = 0x00
[docs]class Crc8I4321(Crc8Base): """CRC-8/I-432-1 Aliases: CRC-8/ITU """ _names = ('CRC-8/I-432-1', 'CRC-8/ITU') _width = 8 _poly = 0x07 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x55 _check_result = 0xa1 _residue = 0xac
Crc8Itu = Crc8I4321
[docs]class Crc8ICode(Crc8Base): """CRC-8/I-CODE""" _names = ('CRC-8/I-CODE',) _width = 8 _poly = 0x1d _initvalue = 0xfd _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x7e _residue = 0x00
[docs]class Crc8Lte(Crc8Base): """CRC-8/LTE""" _names = ('CRC-8/LTE',) _width = 8 _poly = 0x9b _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xea _residue = 0x00
[docs]class Crc8MaximDow(Crc8Base): """CRC-8/MAXIM-DOW Aliases: CRC-8/MAXIM, DOW-CRC """ _names = ('CRC-8/MAXIM-DOW', 'CRC-8/MAXIM', 'DOW-CRC') _width = 8 _poly = 0x31 _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0xa1 _residue = 0x00
Crc8Maxim = Crc8MaximDow CrcDow = Crc8MaximDow
[docs]class Crc8MifareMad(Crc8Base): """CRC-8/MIFARE-MAD""" _names = ('CRC-8/MIFARE-MAD',) _width = 8 _poly = 0x1d _initvalue = 0xc7 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x99 _residue = 0x00
[docs]class Crc8Nrsc5(Crc8Base): """CRC-8/NRSC-5""" _names = ('CRC-8/NRSC-5',) _width = 8 _poly = 0x31 _initvalue = 0xff _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xf7 _residue = 0x00
[docs]class Crc8Opensafety(Crc8Base): """CRC-8/OPENSAFETY""" _names = ('CRC-8/OPENSAFETY',) _width = 8 _poly = 0x2f _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0x3e _residue = 0x00
[docs]class Crc8Rohc(Crc8Base): """CRC-8/ROHC""" _names = ('CRC-8/ROHC',) _width = 8 _poly = 0x07 _initvalue = 0xff _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0xd0 _residue = 0x00
[docs]class Crc8SaeJ1850(Crc8Base): """CRC-8/SAE-J1850""" _names = ('CRC-8/SAE-J1850',) _width = 8 _poly = 0x1d _initvalue = 0xff _reflect_input = False _reflect_output = False _xor_output = 0xff _check_result = 0x4b _residue = 0xc4
[docs]class Crc8Smbus(Crc8Base): """CRC-8/SMBUS Aliases: CRC-8 """ _names = ('CRC-8/SMBUS', 'CRC-8') _width = 8 _poly = 0x07 _initvalue = 0x00 _reflect_input = False _reflect_output = False _xor_output = 0x00 _check_result = 0xf4 _residue = 0x00
Crc8 = Crc8Smbus
[docs]class Crc8Tech3250(Crc8Base): """CRC-8/TECH-3250 Aliases: CRC-8/AES, CRC-8/EBU """ _names = ('CRC-8/TECH-3250', 'CRC-8/AES', 'CRC-8/EBU') _width = 8 _poly = 0x1d _initvalue = 0xff _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x97 _residue = 0x00
Crc8Aes = Crc8Tech3250 Crc8Ebu = Crc8Tech3250
[docs]class Crc8Wcdma(Crc8Base): """CRC-8/WCDMA""" _names = ('CRC-8/WCDMA',) _width = 8 _poly = 0x9b _initvalue = 0x00 _reflect_input = True _reflect_output = True _xor_output = 0x00 _check_result = 0x25 _residue = 0x00
[docs]class Crc10Atm(CrcBase): """CRC-10/ATM Aliases: CRC-10, CRC-10/I-610 """ _names = ('CRC-10/ATM', 'CRC-10', 'CRC-10/I-610') _width = 10 _poly = 0x233 _initvalue = 0x000 _reflect_input = False _reflect_output = False _xor_output = 0x000 _check_result = 0x199 _residue = 0x000
Crc10 = Crc10Atm Crc10I610 = Crc10Atm
[docs]class Crc10Cdma2000(CrcBase): """CRC-10/CDMA2000""" _names = ('CRC-10/CDMA2000',) _width = 10 _poly = 0x3d9 _initvalue = 0x3ff _reflect_input = False _reflect_output = False _xor_output = 0x000 _check_result = 0x233 _residue = 0x000
[docs]class Crc10Gsm(CrcBase): """CRC-10/GSM""" _names = ('CRC-10/GSM',) _width = 10 _poly = 0x175 _initvalue = 0x000 _reflect_input = False _reflect_output = False _xor_output = 0x3ff _check_result = 0x12a _residue = 0x0c6
[docs]class Crc11Flexray(CrcBase): """CRC-11/FLEXRAY Aliases: CRC-11 """ _names = ('CRC-11/FLEXRAY', 'CRC-11') _width = 11 _poly = 0x385 _initvalue = 0x01a _reflect_input = False _reflect_output = False _xor_output = 0x000 _check_result = 0x5a3 _residue = 0x000
Crc11 = Crc11Flexray
[docs]class Crc11Umts(CrcBase): """CRC-11/UMTS""" _names = ('CRC-11/UMTS',) _width = 11 _poly = 0x307 _initvalue = 0x000 _reflect_input = False _reflect_output = False _xor_output = 0x000 _check_result = 0x061 _residue = 0x000
[docs]class Crc12Cdma2000(CrcBase): """CRC-12/CDMA2000""" _names = ('CRC-12/CDMA2000',) _width = 12 _poly = 0xf13 _initvalue = 0xfff _reflect_input = False _reflect_output = False _xor_output = 0x000 _check_result = 0xd4d _residue = 0x000
[docs]class Crc12Dect(CrcBase): """CRC-12/DECT Aliases: CRC-12-X """ _names = ('CRC-12/DECT', 'CRC-12-X') _width = 12 _poly = 0x80f _initvalue = 0x000 _reflect_input = False _reflect_output = False _xor_output = 0x000 _check_result = 0xf5b _residue = 0x000
Crc12X = Crc12Dect
[docs]class Crc12Gsm(CrcBase): """CRC-12/GSM""" _names = ('CRC-12/GSM',) _width = 12 _poly = 0xd31 _initvalue = 0x000 _reflect_input = False _reflect_output = False _xor_output = 0xfff _check_result = 0xb34 _residue = 0x178
[docs]class Crc12Umts(CrcBase): """CRC-12/UMTS Aliases: CRC-12/3GPP """ _names = ('CRC-12/UMTS', 'CRC-12/3GPP') _width = 12 _poly = 0x80f _initvalue = 0x000 _reflect_input = False _reflect_output = True _xor_output = 0x000 _check_result = 0xdaf _residue = 0x000
Crc123Gpp = Crc12Umts
[docs]class Crc13Bbc(CrcBase): """CRC-13/BBC""" _names = ('CRC-13/BBC',) _width = 13 _poly = 0x1cf5 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x04fa _residue = 0x0000
[docs]class Crc14Darc(CrcBase): """CRC-14/DARC""" _names = ('CRC-14/DARC',) _width = 14 _poly = 0x0805 _initvalue = 0x0000 _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0x082d _residue = 0x0000
[docs]class Crc14Gsm(CrcBase): """CRC-14/GSM""" _names = ('CRC-14/GSM',) _width = 14 _poly = 0x202d _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x3fff _check_result = 0x30ae _residue = 0x031e
[docs]class Crc15Can(CrcBase): """CRC-15/CAN Aliases: CRC-15 """ _names = ('CRC-15/CAN', 'CRC-15') _width = 15 _poly = 0x4599 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x059e _residue = 0x0000
Crc15 = Crc15Can
[docs]class Crc15Mpt1327(CrcBase): """CRC-15/MPT1327""" _names = ('CRC-15/MPT1327',) _width = 15 _poly = 0x6815 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0001 _check_result = 0x2566 _residue = 0x6815
[docs]class Crc16Arc(Crc16Base): """CRC-16/ARC Aliases: ARC, CRC-16/LHA, CRC-IBM """ _names = ('CRC-16/ARC', 'ARC', 'CRC-16/LHA', 'CRC-IBM') _width = 16 _poly = 0x8005 _initvalue = 0x0000 _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0xbb3d _residue = 0x0000
CrcArc = Crc16Arc Crc16Lha = Crc16Arc CrcIbm = Crc16Arc
[docs]class Crc16Cdma2000(Crc16Base): """CRC-16/CDMA2000""" _names = ('CRC-16/CDMA2000',) _width = 16 _poly = 0xc867 _initvalue = 0xffff _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x4c06 _residue = 0x0000
[docs]class Crc16Cms(Crc16Base): """CRC-16/CMS""" _names = ('CRC-16/CMS',) _width = 16 _poly = 0x8005 _initvalue = 0xffff _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0xaee7 _residue = 0x0000
[docs]class Crc16Dds110(Crc16Base): """CRC-16/DDS-110""" _names = ('CRC-16/DDS-110',) _width = 16 _poly = 0x8005 _initvalue = 0x800d _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x9ecf _residue = 0x0000
[docs]class Crc16DectR(Crc16Base): """CRC-16/DECT-R Aliases: R-CRC-16 """ _names = ('CRC-16/DECT-R', 'R-CRC-16') _width = 16 _poly = 0x0589 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0001 _check_result = 0x007e _residue = 0x0589
Crc16R = Crc16DectR
[docs]class Crc16DectX(Crc16Base): """CRC-16/DECT-X Aliases: X-CRC-16 """ _names = ('CRC-16/DECT-X', 'X-CRC-16') _width = 16 _poly = 0x0589 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x007f _residue = 0x0000
Crc16X = Crc16DectX
[docs]class Crc16Dnp(Crc16Base): """CRC-16/DNP""" _names = ('CRC-16/DNP',) _width = 16 _poly = 0x3d65 _initvalue = 0x0000 _reflect_input = True _reflect_output = True _xor_output = 0xffff _check_result = 0xea82 _residue = 0x66c5
[docs]class Crc16En13757(Crc16Base): """CRC-16/EN-13757""" _names = ('CRC-16/EN-13757',) _width = 16 _poly = 0x3d65 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0xffff _check_result = 0xc2b7 _residue = 0xa366
[docs]class Crc16Genibus(Crc16Base): """CRC-16/GENIBUS Aliases: CRC-16/DARC, CRC-16/EPC, CRC-16/EPC-C1G2, CRC-16/I-CODE """ _names = ('CRC-16/GENIBUS', 'CRC-16/DARC', 'CRC-16/EPC', 'CRC-16/EPC-C1G2', 'CRC-16/I-CODE') _width = 16 _poly = 0x1021 _initvalue = 0xffff _reflect_input = False _reflect_output = False _xor_output = 0xffff _check_result = 0xd64e _residue = 0x1d0f
Crc16Darc = Crc16Genibus Crc16Epc = Crc16Genibus Crc16EpcC1G2 = Crc16Genibus Crc16ICode = Crc16Genibus
[docs]class Crc16Gsm(Crc16Base): """CRC-16/GSM""" _names = ('CRC-16/GSM',) _width = 16 _poly = 0x1021 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0xffff _check_result = 0xce3c _residue = 0x1d0f
[docs]class Crc16Ibm3740(Crc16Base): """CRC-16/IBM-3740 Aliases: CRC-16/AUTOSAR, CRC-16/CCITT-FALSE """ _names = ('CRC-16/IBM-3740', 'CRC-16/AUTOSAR', 'CRC-16/CCITT-FALSE') _width = 16 _poly = 0x1021 _initvalue = 0xffff _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x29b1 _residue = 0x0000
Crc16Autosar = Crc16Ibm3740 Crc16CcittFalse = Crc16Ibm3740
[docs]class Crc16IbmSdlc(Crc16Base): """CRC-16/IBM-SDLC Aliases: CRC-16/ISO-HDLC, CRC-16/ISO-IEC-14443-3-B, CRC-16/X-25, CRC-B, X-25 """ _names = ('CRC-16/IBM-SDLC', 'CRC-16/ISO-HDLC', 'CRC-16/ISO-IEC-14443-3-B', 'CRC-16/X-25', 'CRC-B', 'X-25') _width = 16 _poly = 0x1021 _initvalue = 0xffff _reflect_input = True _reflect_output = True _xor_output = 0xffff _check_result = 0x906e _residue = 0xf0b8
Crc16IsoHdlc = Crc16IbmSdlc Crc16IsoIec144433B = Crc16IbmSdlc Crc16X25 = Crc16IbmSdlc CrcB = Crc16IbmSdlc CrcX25 = Crc16IbmSdlc
[docs]class Crc16IsoIec144433A(Crc16Base): """CRC-16/ISO-IEC-14443-3-A Aliases: CRC-A """ _names = ('CRC-16/ISO-IEC-14443-3-A', 'CRC-A') _width = 16 _poly = 0x1021 _initvalue = 0xc6c6 _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0xbf05 _residue = 0x0000
CrcA = Crc16IsoIec144433A
[docs]class Crc16Kermit(Crc16Base): """CRC-16/KERMIT Aliases: CRC-16/CCITT, CRC-16/CCITT-TRUE, CRC-16/V-41-LSB, CRC-CCITT, KERMIT """ _names = ('CRC-16/KERMIT', 'CRC-16/CCITT', 'CRC-16/CCITT-TRUE', 'CRC-16/V-41-LSB', 'CRC-CCITT', 'KERMIT') _width = 16 _poly = 0x1021 _initvalue = 0x0000 _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0x2189 _residue = 0x0000
Crc16Ccitt = Crc16Kermit Crc16CcittTrue = Crc16Kermit Crc16V41Lsb = Crc16Kermit CrcCcitt = Crc16Kermit CrcKermit = Crc16Kermit
[docs]class Crc16Lj1200(Crc16Base): """CRC-16/LJ1200""" _names = ('CRC-16/LJ1200',) _width = 16 _poly = 0x6f63 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0xbdf4 _residue = 0x0000
[docs]class Crc16M17(Crc16Base): """CRC-16/M17""" _names = ('CRC-16/M17',) _width = 16 _poly = 0x5935 _initvalue = 0xffff _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x772b _residue = 0x0000
[docs]class Crc16MaximDow(Crc16Base): """CRC-16/MAXIM-DOW Aliases: CRC-16/MAXIM """ _names = ('CRC-16/MAXIM-DOW', 'CRC-16/MAXIM') _width = 16 _poly = 0x8005 _initvalue = 0x0000 _reflect_input = True _reflect_output = True _xor_output = 0xffff _check_result = 0x44c2 _residue = 0xb001
Crc16Maxim = Crc16MaximDow
[docs]class Crc16Mcrf4Xx(Crc16Base): """CRC-16/MCRF4XX""" _names = ('CRC-16/MCRF4XX',) _width = 16 _poly = 0x1021 _initvalue = 0xffff _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0x6f91 _residue = 0x0000
Crc16Mcrf4XX = Crc16Mcrf4Xx Crcc16Mcrf4xx = Crc16Mcrf4Xx
[docs]class Crc16Modbus(Crc16Base): """CRC-16/MODBUS Aliases: MODBUS """ _names = ('CRC-16/MODBUS', 'MODBUS') _width = 16 _poly = 0x8005 _initvalue = 0xffff _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0x4b37 _residue = 0x0000
CrcModbus = Crc16Modbus
[docs]class Crc16Nrsc5(Crc16Base): """CRC-16/NRSC-5""" _names = ('CRC-16/NRSC-5',) _width = 16 _poly = 0x080b _initvalue = 0xffff _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0xa066 _residue = 0x0000
[docs]class Crc16OpensafetyA(Crc16Base): """CRC-16/OPENSAFETY-A""" _names = ('CRC-16/OPENSAFETY-A',) _width = 16 _poly = 0x5935 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x5d38 _residue = 0x0000
[docs]class Crc16OpensafetyB(Crc16Base): """CRC-16/OPENSAFETY-B""" _names = ('CRC-16/OPENSAFETY-B',) _width = 16 _poly = 0x755b _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x20fe _residue = 0x0000
[docs]class Crc16Profibus(Crc16Base): """CRC-16/PROFIBUS Aliases: CRC-16/IEC-61158-2 """ _names = ('CRC-16/PROFIBUS', 'CRC-16/IEC-61158-2') _width = 16 _poly = 0x1dcf _initvalue = 0xffff _reflect_input = False _reflect_output = False _xor_output = 0xffff _check_result = 0xa819 _residue = 0xe394
Crc16Iec611582 = Crc16Profibus
[docs]class Crc16Riello(Crc16Base): """CRC-16/RIELLO""" _names = ('CRC-16/RIELLO',) _width = 16 _poly = 0x1021 _initvalue = 0xb2aa _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0x63d0 _residue = 0x0000
[docs]class Crc16SpiFujitsu(Crc16Base): """CRC-16/SPI-FUJITSU Aliases: CRC-16/AUG-CCITT """ _names = ('CRC-16/SPI-FUJITSU', 'CRC-16/AUG-CCITT') _width = 16 _poly = 0x1021 _initvalue = 0x1d0f _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0xe5cc _residue = 0x0000
Crc16AugCcitt = Crc16SpiFujitsu
[docs]class Crc16T10Dif(Crc16Base): """CRC-16/T10-DIF""" _names = ('CRC-16/T10-DIF',) _width = 16 _poly = 0x8bb7 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0xd0db _residue = 0x0000
[docs]class Crc16Teledisk(Crc16Base): """CRC-16/TELEDISK""" _names = ('CRC-16/TELEDISK',) _width = 16 _poly = 0xa097 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x0fb3 _residue = 0x0000
[docs]class Crc16Tms37157(Crc16Base): """CRC-16/TMS37157""" _names = ('CRC-16/TMS37157',) _width = 16 _poly = 0x1021 _initvalue = 0x89ec _reflect_input = True _reflect_output = True _xor_output = 0x0000 _check_result = 0x26b1 _residue = 0x0000
[docs]class Crc16Umts(Crc16Base): """CRC-16/UMTS Aliases: CRC-16/BUYPASS, CRC-16/VERIFONE """ _names = ('CRC-16/UMTS', 'CRC-16/BUYPASS', 'CRC-16/VERIFONE') _width = 16 _poly = 0x8005 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0xfee8 _residue = 0x0000
Crc16Buypass = Crc16Umts Crc16Verifone = Crc16Umts
[docs]class Crc16Usb(Crc16Base): """CRC-16/USB""" _names = ('CRC-16/USB',) _width = 16 _poly = 0x8005 _initvalue = 0xffff _reflect_input = True _reflect_output = True _xor_output = 0xffff _check_result = 0xb4c8 _residue = 0xb001
[docs]class Crc16Xmodem(Crc16Base): """CRC-16/XMODEM Aliases: CRC-16/ACORN, CRC-16/LTE, CRC-16/V-41-MSB, XMODEM, ZMODEM """ _names = ('CRC-16/XMODEM', 'CRC-16/ACORN', 'CRC-16/LTE', 'CRC-16/V-41-MSB', 'XMODEM', 'ZMODEM') _width = 16 _poly = 0x1021 _initvalue = 0x0000 _reflect_input = False _reflect_output = False _xor_output = 0x0000 _check_result = 0x31c3 _residue = 0x0000
Crc16Acorn = Crc16Xmodem Crc16Lte = Crc16Xmodem Crc16V41Msb = Crc16Xmodem CrcXmodem = Crc16Xmodem CrcZmodem = Crc16Xmodem Crc16 = Crc16Xmodem
[docs]class Crc17CanFd(CrcBase): """CRC-17/CAN-FD""" _names = ('CRC-17/CAN-FD',) _width = 17 _poly = 0x1685b _initvalue = 0x00000 _reflect_input = False _reflect_output = False _xor_output = 0x00000 _check_result = 0x04f03 _residue = 0x00000
[docs]class Crc21CanFd(CrcBase): """CRC-21/CAN-FD""" _names = ('CRC-21/CAN-FD',) _width = 21 _poly = 0x102899 _initvalue = 0x000000 _reflect_input = False _reflect_output = False _xor_output = 0x000000 _check_result = 0x0ed841 _residue = 0x000000
[docs]class Crc24Ble(CrcBase): """CRC-24/BLE""" _names = ('CRC-24/BLE',) _width = 24 _poly = 0x00065b _initvalue = 0x555555 _reflect_input = True _reflect_output = True _xor_output = 0x000000 _check_result = 0xc25a56 _residue = 0x000000
[docs]class Crc24FlexrayA(CrcBase): """CRC-24/FLEXRAY-A""" _names = ('CRC-24/FLEXRAY-A',) _width = 24 _poly = 0x5d6dcb _initvalue = 0xfedcba _reflect_input = False _reflect_output = False _xor_output = 0x000000 _check_result = 0x7979bd _residue = 0x000000
[docs]class Crc24FlexrayB(CrcBase): """CRC-24/FLEXRAY-B""" _names = ('CRC-24/FLEXRAY-B',) _width = 24 _poly = 0x5d6dcb _initvalue = 0xabcdef _reflect_input = False _reflect_output = False _xor_output = 0x000000 _check_result = 0x1f23b8 _residue = 0x000000
[docs]class Crc24Interlaken(CrcBase): """CRC-24/INTERLAKEN""" _names = ('CRC-24/INTERLAKEN',) _width = 24 _poly = 0x328b63 _initvalue = 0xffffff _reflect_input = False _reflect_output = False _xor_output = 0xffffff _check_result = 0xb4f3e6 _residue = 0x144e63
[docs]class Crc24LteA(CrcBase): """CRC-24/LTE-A""" _names = ('CRC-24/LTE-A',) _width = 24 _poly = 0x864cfb _initvalue = 0x000000 _reflect_input = False _reflect_output = False _xor_output = 0x000000 _check_result = 0xcde703 _residue = 0x000000
[docs]class Crc24LteB(CrcBase): """CRC-24/LTE-B""" _names = ('CRC-24/LTE-B',) _width = 24 _poly = 0x800063 _initvalue = 0x000000 _reflect_input = False _reflect_output = False _xor_output = 0x000000 _check_result = 0x23ef52 _residue = 0x000000
[docs]class Crc24Openpgp(CrcBase): """CRC-24/OPENPGP Aliases: CRC-24 """ _names = ('CRC-24/OPENPGP', 'CRC-24') _width = 24 _poly = 0x864cfb _initvalue = 0xb704ce _reflect_input = False _reflect_output = False _xor_output = 0x000000 _check_result = 0x21cf02 _residue = 0x000000
Crc24 = Crc24Openpgp Crc24OpenPgp = Crc24Openpgp
[docs]class Crc24Os9(CrcBase): """CRC-24/OS-9""" _names = ('CRC-24/OS-9',) _width = 24 _poly = 0x800063 _initvalue = 0xffffff _reflect_input = False _reflect_output = False _xor_output = 0xffffff _check_result = 0x200fa5 _residue = 0x800fe3
[docs]class Crc30Cdma(CrcBase): """CRC-30/CDMA""" _names = ('CRC-30/CDMA',) _width = 30 _poly = 0x2030b9c7 _initvalue = 0x3fffffff _reflect_input = False _reflect_output = False _xor_output = 0x3fffffff _check_result = 0x04c34abf _residue = 0x34efa55a
[docs]class Crc31Philips(CrcBase): """CRC-31/PHILIPS""" _names = ('CRC-31/PHILIPS',) _width = 31 _poly = 0x04c11db7 _initvalue = 0x7fffffff _reflect_input = False _reflect_output = False _xor_output = 0x7fffffff _check_result = 0x0ce9e46c _residue = 0x4eaf26f1
[docs]class Crc32Aixm(Crc32Base): """CRC-32/AIXM Aliases: CRC-32Q """ _names = ('CRC-32/AIXM', 'CRC-32Q') _width = 32 _poly = 0x814141ab _initvalue = 0x00000000 _reflect_input = False _reflect_output = False _xor_output = 0x00000000 _check_result = 0x3010bf7f _residue = 0x00000000
Crc32Q = Crc32Aixm Crc32q = Crc32Aixm
[docs]class Crc32Autosar(Crc32Base): """CRC-32/AUTOSAR""" _names = ('CRC-32/AUTOSAR',) _width = 32 _poly = 0xf4acfb13 _initvalue = 0xffffffff _reflect_input = True _reflect_output = True _xor_output = 0xffffffff _check_result = 0x1697d06a _residue = 0x904cddbf
[docs]class Crc32Base91D(Crc32Base): """CRC-32/BASE91-D Aliases: CRC-32D """ _names = ('CRC-32/BASE91-D', 'CRC-32D') _width = 32 _poly = 0xa833982b _initvalue = 0xffffffff _reflect_input = True _reflect_output = True _xor_output = 0xffffffff _check_result = 0x87315576 _residue = 0x45270551
Crc32D = Crc32Base91D Crc32d = Crc32Base91D
[docs]class Crc32Bzip2(Crc32Base): """CRC-32/BZIP2 Aliases: CRC-32/AAL5, CRC-32/DECT-B, B-CRC-32 """ _names = ('CRC-32/BZIP2', 'CRC-32/AAL5', 'CRC-32/DECT-B', 'B-CRC-32') _width = 32 _poly = 0x04c11db7 _initvalue = 0xffffffff _reflect_input = False _reflect_output = False _xor_output = 0xffffffff _check_result = 0xfc891918 _residue = 0xc704dd7b
Crc32Aal5 = Crc32Bzip2 Crc32DectB = Crc32Bzip2 Crc32B = Crc32Bzip2
[docs]class Crc32CdRomEdc(Crc32Base): """CRC-32/CD-ROM-EDC""" _names = ('CRC-32/CD-ROM-EDC',) _width = 32 _poly = 0x8001801b _initvalue = 0x00000000 _reflect_input = True _reflect_output = True _xor_output = 0x00000000 _check_result = 0x6ec2edc4 _residue = 0x00000000
[docs]class Crc32Cksum(Crc32Base): """CRC-32/CKSUM Aliases: CKSUM, CRC-32/POSIX """ _names = ('CRC-32/CKSUM', 'CKSUM', 'CRC-32/POSIX') _width = 32 _poly = 0x04c11db7 _initvalue = 0x00000000 _reflect_input = False _reflect_output = False _xor_output = 0xffffffff _check_result = 0x765e7680 _residue = 0xc704dd7b
CrcCksum = Crc32Cksum Crc32Posix = Crc32Cksum
[docs]class Crc32Iscsi(Crc32Base): """CRC-32/ISCSI Aliases: CRC-32/BASE91-C, CRC-32/CASTAGNOLI, CRC-32/INTERLAKEN, CRC-32C """ _names = ('CRC-32/ISCSI', 'CRC-32/BASE91-C', 'CRC-32/CASTAGNOLI', 'CRC-32/INTERLAKEN', 'CRC-32C') _width = 32 _poly = 0x1edc6f41 _initvalue = 0xffffffff _reflect_input = True _reflect_output = True _xor_output = 0xffffffff _check_result = 0xe3069283 _residue = 0xb798b438
Crc32Base91C = Crc32Iscsi Crc32Castagnoli = Crc32Iscsi Crc32Interlaken = Crc32Iscsi Crc32C = Crc32Iscsi Crc32c = Crc32Iscsi
[docs]class Crc32IsoHdlc(Crc32Base): """CRC-32/ISO-HDLC Aliases: CRC-32, CRC-32/ADCCP, CRC-32/V-42, CRC-32/XZ, PKZIP """ _names = ('CRC-32/ISO-HDLC', 'CRC-32', 'CRC-32/ADCCP', 'CRC-32/V-42', 'CRC-32/XZ', 'PKZIP') _width = 32 _poly = 0x04c11db7 _initvalue = 0xffffffff _reflect_input = True _reflect_output = True _xor_output = 0xffffffff _check_result = 0xcbf43926 _residue = 0xdebb20e3
Crc32 = Crc32IsoHdlc Crc32Adccp = Crc32IsoHdlc Crc32V42 = Crc32IsoHdlc Crc32Xz = Crc32IsoHdlc CrcPkzip = Crc32IsoHdlc
[docs]class Crc32Jamcrc(Crc32Base): """CRC-32/JAMCRC Aliases: JAMCRC """ _names = ('CRC-32/JAMCRC', 'JAMCRC') _width = 32 _poly = 0x04c11db7 _initvalue = 0xffffffff _reflect_input = True _reflect_output = True _xor_output = 0x00000000 _check_result = 0x340bc6d9 _residue = 0x00000000
CrcJamcrc = Crc32Jamcrc
[docs]class Crc32Mef(Crc32Base): """CRC-32/MEF""" _names = ('CRC-32/MEF',) _width = 32 _poly = 0x741b8cd7 _initvalue = 0xffffffff _reflect_input = True _reflect_output = True _xor_output = 0x00000000 _check_result = 0xd2c22f51 _residue = 0x00000000
[docs]class Crc32Mpeg2(Crc32Base): """CRC-32/MPEG-2""" _names = ('CRC-32/MPEG-2',) _width = 32 _poly = 0x04c11db7 _initvalue = 0xffffffff _reflect_input = False _reflect_output = False _xor_output = 0x00000000 _check_result = 0x0376e6e7 _residue = 0x00000000
[docs]class Crc32Xfer(Crc32Base): """CRC-32/XFER Aliases: XFER """ _names = ('CRC-32/XFER', 'XFER') _width = 32 _poly = 0x000000af _initvalue = 0x00000000 _reflect_input = False _reflect_output = False _xor_output = 0x00000000 _check_result = 0xbd0be338 _residue = 0x00000000
CrcXfer = Crc32Xfer
[docs]class Crc40Gsm(CrcBase): """CRC-40/GSM""" _names = ('CRC-40/GSM',) _width = 40 _poly = 0x0004820009 _initvalue = 0x0000000000 _reflect_input = False _reflect_output = False _xor_output = 0xffffffffff _check_result = 0xd4164fc646 _residue = 0xc4ff8071ff
[docs]class Crc64Ecma182(CrcBase): """CRC-64/ECMA-182 Aliases: CRC-64 """ _names = ('CRC-64/ECMA-182', 'CRC-64') _width = 64 _poly = 0x42f0e1eba9ea3693 _initvalue = 0x0000000000000000 _reflect_input = False _reflect_output = False _xor_output = 0x0000000000000000 _check_result = 0x6c40df5f0b497347 _residue = 0x0000000000000000
Crc64 = Crc64Ecma182
[docs]class Crc64GoIso(CrcBase): """CRC-64/GO-ISO""" _names = ('CRC-64/GO-ISO',) _width = 64 _poly = 0x000000000000001b _initvalue = 0xffffffffffffffff _reflect_input = True _reflect_output = True _xor_output = 0xffffffffffffffff _check_result = 0xb90956c775a41001 _residue = 0x5300000000000000
[docs]class Crc64Ms(CrcBase): """CRC-64/MS""" _names = ('CRC-64/MS',) _width = 64 _poly = 0x259c84cba6426349 _initvalue = 0xffffffffffffffff _reflect_input = True _reflect_output = True _xor_output = 0x0000000000000000 _check_result = 0x75d4b74f024eceea _residue = 0x0000000000000000
[docs]class Crc64Redis(CrcBase): """CRC-64/REDIS""" _names = ('CRC-64/REDIS',) _width = 64 _poly = 0xad93d23594c935a9 _initvalue = 0x0000000000000000 _reflect_input = True _reflect_output = True _xor_output = 0x0000000000000000 _check_result = 0xe9c6d914c4b8d9ca _residue = 0x0000000000000000
[docs]class Crc64We(CrcBase): """CRC-64/WE""" _names = ('CRC-64/WE',) _width = 64 _poly = 0x42f0e1eba9ea3693 _initvalue = 0xffffffffffffffff _reflect_input = False _reflect_output = False _xor_output = 0xffffffffffffffff _check_result = 0x62ec59e3f1a4f00a _residue = 0xfcacbebd5931a992
[docs]class Crc64Xz(CrcBase): """CRC-64/XZ Aliases: CRC-64/GO-ECMA """ _names = ('CRC-64/XZ', 'CRC-64/GO-ECMA') _width = 64 _poly = 0x42f0e1eba9ea3693 _initvalue = 0xffffffffffffffff _reflect_input = True _reflect_output = True _xor_output = 0xffffffffffffffff _check_result = 0x995dc9bbdf1939fa _residue = 0x49958c9abd7d353f
Crc64GoEcma = Crc64Xz
[docs]class Crc82Darc(CrcBase): """CRC-82/DARC""" _names = ('CRC-82/DARC',) _width = 82 _poly = 0x0308c0111011401440411 _initvalue = 0x000000000000000000000 _reflect_input = True _reflect_output = True _xor_output = 0x000000000000000000000 _check_result = 0x09ea83f625023801fd612 _residue = 0x000000000000000000000
ALLCRCCLASSES = ( Crc3Gsm, Crc3Rohc, Crc4G704, Crc4Interlaken, Crc5EpcC1G2, Crc5G704, Crc5Usb, Crc6Cdma2000A, Crc6Cdma2000B, Crc6Darc, Crc6G704, Crc6Gsm, Crc7Mmc, Crc7Rohc, Crc7Umts, Crc8Autosar, Crc8Bluetooth, Crc8Cdma2000, Crc8Darc, Crc8DvbS2, Crc8GsmA, Crc8GsmB, Crc8Hitag, Crc8I4321, Crc8ICode, Crc8Lte, Crc8MaximDow, Crc8MifareMad, Crc8Nrsc5, Crc8Opensafety, Crc8Rohc, Crc8SaeJ1850, Crc8Smbus, Crc8Tech3250, Crc8Wcdma, Crc10Atm, Crc10Cdma2000, Crc10Gsm, Crc11Flexray, Crc11Umts, Crc12Cdma2000, Crc12Dect, Crc12Gsm, Crc12Umts, Crc13Bbc, Crc14Darc, Crc14Gsm, Crc15Can, Crc15Mpt1327, Crc16Arc, Crc16Cdma2000, Crc16Cms, Crc16Dds110, Crc16DectR, Crc16DectX, Crc16Dnp, Crc16En13757, Crc16Genibus, Crc16Gsm, Crc16Ibm3740, Crc16IbmSdlc, Crc16IsoIec144433A, Crc16Kermit, Crc16Lj1200, Crc16M17, Crc16MaximDow, Crc16Mcrf4Xx, Crc16Modbus, Crc16Nrsc5, Crc16OpensafetyA, Crc16OpensafetyB, Crc16Profibus, Crc16Riello, Crc16SpiFujitsu, Crc16T10Dif, Crc16Teledisk, Crc16Tms37157, Crc16Umts, Crc16Usb, Crc16Xmodem, Crc17CanFd, Crc21CanFd, Crc24Ble, Crc24FlexrayA, Crc24FlexrayB, Crc24Interlaken, Crc24LteA, Crc24LteB, Crc24Openpgp, Crc24Os9, Crc30Cdma, Crc31Philips, Crc32Aixm, Crc32Autosar, Crc32Base91D, Crc32Bzip2, Crc32CdRomEdc, Crc32Cksum, Crc32Iscsi, Crc32IsoHdlc, Crc32Jamcrc, Crc32Mef, Crc32Mpeg2, Crc32Xfer, Crc40Gsm, Crc64Ecma182, Crc64GoIso, Crc64Ms, Crc64Redis, Crc64We, Crc64Xz, Crc82Darc ) ALLCRCCLASSES_ALIASES = ( Crc3Gsm, Crc3Rohc, Crc4G704, Crc4Itu, Crc4Interlaken, Crc5EpcC1G2, Crc5Epc, Crc5G704, Crc5Itu, Crc5Usb, Crc6Cdma2000A, Crc6Cdma2000B, Crc6Darc, Crc6G704, Crc6Itu, Crc6Gsm, Crc7Mmc, Crc7, Crc7Rohc, Crc7Umts, Crc8Autosar, Crc8Bluetooth, Crc8Cdma2000, Crc8Darc, Crc8DvbS2, Crc8GsmA, Crc8GsmB, Crc8Hitag, Crc8I4321, Crc8Itu, Crc8ICode, Crc8Lte, Crc8MaximDow, Crc8Maxim, CrcDow, Crc8MifareMad, Crc8Nrsc5, Crc8Opensafety, Crc8Rohc, Crc8SaeJ1850, Crc8Smbus, Crc8, Crc8Tech3250, Crc8Aes, Crc8Ebu, Crc8Wcdma, Crc10Atm, Crc10, Crc10I610, Crc10Cdma2000, Crc10Gsm, Crc11Flexray, Crc11, Crc11Umts, Crc12Cdma2000, Crc12Dect, Crc12X, Crc12Gsm, Crc12Umts, Crc123Gpp, Crc13Bbc, Crc14Darc, Crc14Gsm, Crc15Can, Crc15, Crc15Mpt1327, Crc16Arc, CrcArc, Crc16Lha, CrcIbm, Crc16Cdma2000, Crc16Cms, Crc16Dds110, Crc16DectR, Crc16R, Crc16DectX, Crc16X, Crc16Dnp, Crc16En13757, Crc16Genibus, Crc16Darc, Crc16Epc, Crc16EpcC1G2, Crc16ICode, Crc16Gsm, Crc16Ibm3740, Crc16Autosar, Crc16CcittFalse, Crc16IbmSdlc, Crc16IsoHdlc, Crc16IsoIec144433B, Crc16X25, CrcB, CrcX25, Crc16IsoIec144433A, CrcA, Crc16Kermit, Crc16Ccitt, Crc16CcittTrue, Crc16V41Lsb, CrcCcitt, CrcKermit, Crc16Lj1200, Crc16M17, Crc16MaximDow, Crc16Maxim, Crc16Mcrf4Xx, Crc16Mcrf4XX, Crcc16Mcrf4xx, Crc16Modbus, CrcModbus, Crc16Nrsc5, Crc16OpensafetyA, Crc16OpensafetyB, Crc16Profibus, Crc16Iec611582, Crc16Riello, Crc16SpiFujitsu, Crc16AugCcitt, Crc16T10Dif, Crc16Teledisk, Crc16Tms37157, Crc16Umts, Crc16Buypass, Crc16Verifone, Crc16Usb, Crc16Xmodem, Crc16Acorn, Crc16Lte, Crc16V41Msb, CrcXmodem, CrcZmodem, Crc16, Crc17CanFd, Crc21CanFd, Crc24Ble, Crc24FlexrayA, Crc24FlexrayB, Crc24Interlaken, Crc24LteA, Crc24LteB, Crc24Openpgp, Crc24, Crc24OpenPgp, Crc24Os9, Crc30Cdma, Crc31Philips, Crc32Aixm, Crc32Q, Crc32q, Crc32Autosar, Crc32Base91D, Crc32D, Crc32d, Crc32Bzip2, Crc32Aal5, Crc32DectB, Crc32B, Crc32CdRomEdc, Crc32Cksum, CrcCksum, Crc32Posix, Crc32Iscsi, Crc32Base91C, Crc32Castagnoli, Crc32Interlaken, Crc32C, Crc32c, Crc32IsoHdlc, Crc32, Crc32Adccp, Crc32V42, Crc32Xz, CrcPkzip, Crc32Jamcrc, CrcJamcrc, Crc32Mef, Crc32Mpeg2, Crc32Xfer, CrcXfer, Crc40Gsm, Crc64Ecma182, Crc64, Crc64GoIso, Crc64Ms, Crc64Redis, Crc64We, Crc64Xz, Crc64GoEcma, Crc82Darc )