CRC
Calculate CRC checksums, verify CRC checksum, predefined CRC configurations, custom CRC configurations
- Documentation: https://nicoretti.github.io/crc
- Source Code: 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 or file an issue.
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 might help.
Requirements
Installation
pip install crc
Examples
Create a Calculator
Pre defined configuration
from crc import Calculator, Crc8
calculator = Calculator(Crc8.CCITT)
Custom configuration
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
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
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
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
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
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
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
Release files for crc 8.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| crc-8.0.0.tar.gz | 7.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| crc-8.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.6 kB
Release files / crc-8.0.0.tar.gz
| Download URL | crc-8.0.0.tar.gz |
|---|---|
| Size | 7.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e1ef893b042c26c9f47fd32f3c17507b7d1bd81169acebaef908774856fdaa3e
|
|
BLAKE2b-256 checksum How to use checksums |
48b879b2c41836b5f8503342956ef31218059159a3f556c31e76ef5c14233d4b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.14
|
Release files / crc-8.0.0-py3-none-any.whl
| Download URL | crc-8.0.0-py3-none-any.whl |
|---|---|
| Size | 8.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2c3603d5d8f5b241ba7fcc466b1fa9b0cbcbf45ebeaf5598c46dd4dcfb9e396e
|
|
BLAKE2b-256 checksum How to use checksums |
5f444ab29e156d516c5bcca080e5dd3569dc41c41c09998fac34c7b42e5956c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.14
|