Metadata-Version: 2.1 Name: crc Version: 7.1.0 Summary: Pure Python CRC library Home-page: https://github.com/Nicoretti/crc License: BSD-2-Clause Keywords: CRC,CRC8,CRC16,CRC32,CRC64 Author: Nicola Coretti Author-email: nico.coretti@gmail.com Maintainer: Nicola Coretti Maintainer-email: nico.coretti@gmail.com Requires-Python: >=3.8,<4.0 Classifier: License :: OSI Approved :: BSD License Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Project-URL: Changelog, https://nicoretti.github.io/crc/changelog/unreleased/ Project-URL: Documentation, https://nicoretti.github.io/crc/ Project-URL: Homepage, https://nicoretti.github.io/crc/ Project-URL: Issues, https://github.com/Nicoretti/crc/issues Project-URL: Repository, https://github.com/Nicoretti/crc Project-URL: Source, https://github.com/Nicoretti/crc Description-Content-Type: text/markdown

CRC

Calculate CRC checksums, verify CRC checksum, predefined CRC configurations, custom CRC configurations

Checks Master Coverage License Downloads Supported Python Versions PyPi Package

--- * Documentation: [https://nicoretti.github.io/crc](https://nicoretti.github.io/crc) * Source Code: [https://github.com/Nicoretti/crc](https://github.com/Nicoretti/crc) --- ## Available CRC Configurations For convenience various frequently used crc configurations ship with the library out of the box. | CRC8 | CRC16 | CRC32 | CRC64 | |---------------|----------|---------|-------| | CCITT | XMODEM | CRC32 | CRC64 | | AUTOSAR | GSM | AUTOSAR | | | SAEJ1850 | PROFIBUS | BZIP2 | | | SAEJ1850_ZERO | MODBUS | POSIX | | | BLUETOOTH | IBM-3740 | | | | MAXIM-DOW | KERMIT | | | If you find yourself in the position, where having a new configuration available out of the box would be desirable, feel free to create a [PR](https://github.com/Nicoretti/crc/pulls) or file an [issue](https://github.com/Nicoretti/crc/issues). ## Custom Configurations If you want to create a custom configuration, you should have the following information available: 🗒 Note: This library currently only supports bit widths of full bytes 8, 16, 24, 32, ... * **width** * **polynom** * **init value** * **final xor value** * **reversed input** * **reversed output** In case you only have a name of a specific crc configuration/algorithm and you are unsure what are the specific parameters of it, a look into this [crc-catalogue](http://reveng.sourceforge.net/crc-catalogue/all.htm) might help. ## Requirements * [\>= Python 3.8](https://www.python.org) ## Installation ```shell pip install crc ``` ## Examples ### Create a Calculator #### Pre defined configuration ```python from crc import Calculator, Crc8 calculator = Calculator(Crc8.CCITT) ``` #### Custom configuration ```python from crc import Calculator, Configuration config = Configuration( width=8, polynomial=0x07, init_value=0x00, final_xor_value=0x00, reverse_input=False, reverse_output=False, ) calculator = Calculator(config) ``` ### Calculate a checksum #### Standard ```python from crc import Calculator, Crc8 expected = 0xBC data = bytes([0, 1, 2, 3, 4, 5]) calculator = Calculator(Crc8.CCITT) assert expected == calculator.checksum(data) ``` #### Optimized for speed ```python from crc import Calculator, Crc8 expected = 0xBC data = bytes([0, 1, 2, 3, 4, 5]) calculator = Calculator(Crc8.CCITT, optimized=True) assert expected == calculator.checksum(data) ``` ### Verify a checksum #### Standard ```python from crc import Calculator, Crc8 expected = 0xBC data = bytes([0, 1, 2, 3, 4, 5]) calculator = Calculator(Crc8.CCITT) assert calculator.verify(data, expected) ``` #### Optimized for speed ```python from crc import Calculator, Crc8 expected = 0xBC data = bytes([0, 1, 2, 3, 4, 5]) calculator = Calculator(Crc8.CCITT, optimized=True) assert calculator.verify(data, expected) ``` ### Calculate a checksum with raw registers #### Register ```python from crc import Crc8, Register expected = 0xBC data = bytes([0, 1, 2, 3, 4, 5]) register = Register(Crc8.CCITT) register.init() register.update(data) assert expected == register.digest() ``` #### TableBasedRegister ```python from crc import Crc8, TableBasedRegister expected = 0xBC data = bytes([0, 1, 2, 3, 4, 5]) register = TableBasedRegister(Crc8.CCITT) register.init() register.update(data) assert expected == register.digest() ``` References & Resources ----------------------- * [A Painless guide to crc error detection algorithms](http://www.zlib.net/crc_v3.txt) * [CRC-Catalogue](http://reveng.sourceforge.net/crc-catalogue/all.htm)