Skip to main content

Python CRC Computation Library

Project description

This is a Cython module with bindings to the crcany library. It supports calculating CRC hashes of arbitary sizes as well as updating a crc hash over time.

Installation

pip install anycrc

Usage

Use an existing model:

>>> import anycrc
>>> crc32 = anycrc.Model('CRC32-ISO-HDLC')
>>> crc32.calc(b'Hello World!')
472456355

Read the data in chunks:

>>> crc32.reset() #set to the initial value
>>> crc32.calc(b'Hello ')
3928882368
>>> crc32.calc(b'World!')
472456355

Specify your own CRC parameters:

>>> # width, poly, init, refin, refout, xorout
>>> my_crc = anycrc.CRC(10, 0b0101010101, 0x3ff, True, False, 0)
>>> my_crc.calc('Hello World!')
35

For a list of pre-built models, check models.py

Benchmarks

Calculating the CRC32 for lorem ipsum 10 million times:

Module Time Elapsed Average Time Relative
anycrc 7.732s 0.773 us/run 1.000
binascii 7.612s 0.761 us/run 0.984
fastcrc 16.483s 1.648 us/run 2.132
crcmod-plus 18.259s 1.826 us/run 2.361

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anycrc-0.3.0.tar.gz (15.1 kB view hashes)

Uploaded Source

Built Distributions

anycrc-0.3.0-pp310-pypy310_pp73-win_amd64.whl (35.3 kB view hashes)

Uploaded PyPy Windows x86-64

anycrc-0.3.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (44.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

anycrc-0.3.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (49.3 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

anycrc-0.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl (35.6 kB view hashes)

Uploaded PyPy macOS 11.0+ ARM64

anycrc-0.3.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (38.2 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

anycrc-0.3.0-pp39-pypy39_pp73-win_amd64.whl (35.1 kB view hashes)

Uploaded PyPy Windows x86-64

anycrc-0.3.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (44.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

anycrc-0.3.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (49.2 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

anycrc-0.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl (35.5 kB view hashes)

Uploaded PyPy macOS 11.0+ ARM64

anycrc-0.3.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (38.1 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

anycrc-0.3.0-pp38-pypy38_pp73-win_amd64.whl (34.8 kB view hashes)

Uploaded PyPy Windows x86-64

anycrc-0.3.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (43.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

anycrc-0.3.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (48.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

anycrc-0.3.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl (34.8 kB view hashes)

Uploaded PyPy macOS 11.0+ ARM64

anycrc-0.3.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (37.5 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

anycrc-0.3.0-pp37-pypy37_pp73-win_amd64.whl (34.8 kB view hashes)

Uploaded PyPy Windows x86-64

anycrc-0.3.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (44.1 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

anycrc-0.3.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (48.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

anycrc-0.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (37.5 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

anycrc-0.3.0-cp312-cp312-win_amd64.whl (39.9 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

anycrc-0.3.0-cp312-cp312-win32.whl (37.6 kB view hashes)

Uploaded CPython 3.12 Windows x86

anycrc-0.3.0-cp312-cp312-musllinux_1_1_x86_64.whl (226.9 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

anycrc-0.3.0-cp312-cp312-musllinux_1_1_i686.whl (217.2 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

anycrc-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (226.3 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

anycrc-0.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (217.5 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

anycrc-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (43.8 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

anycrc-0.3.0-cp312-cp312-macosx_10_9_x86_64.whl (47.8 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ x86-64

anycrc-0.3.0-cp311-cp311-win_amd64.whl (39.9 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

anycrc-0.3.0-cp311-cp311-win32.whl (37.6 kB view hashes)

Uploaded CPython 3.11 Windows x86

anycrc-0.3.0-cp311-cp311-musllinux_1_1_x86_64.whl (223.4 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

anycrc-0.3.0-cp311-cp311-musllinux_1_1_i686.whl (215.8 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

anycrc-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (223.0 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

anycrc-0.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (214.9 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

anycrc-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (43.7 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

anycrc-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl (47.5 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

anycrc-0.3.0-cp310-cp310-win_amd64.whl (39.9 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

anycrc-0.3.0-cp310-cp310-win32.whl (38.0 kB view hashes)

Uploaded CPython 3.10 Windows x86

anycrc-0.3.0-cp310-cp310-musllinux_1_1_x86_64.whl (206.6 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

anycrc-0.3.0-cp310-cp310-musllinux_1_1_i686.whl (204.3 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

anycrc-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (204.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

anycrc-0.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (200.1 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

anycrc-0.3.0-cp310-cp310-macosx_11_0_arm64.whl (43.7 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

anycrc-0.3.0-cp310-cp310-macosx_10_9_x86_64.whl (47.5 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

anycrc-0.3.0-cp39-cp39-win_amd64.whl (40.5 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

anycrc-0.3.0-cp39-cp39-win32.whl (38.5 kB view hashes)

Uploaded CPython 3.9 Windows x86

anycrc-0.3.0-cp39-cp39-musllinux_1_1_x86_64.whl (212.2 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

anycrc-0.3.0-cp39-cp39-musllinux_1_1_i686.whl (209.7 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

anycrc-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (209.3 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

anycrc-0.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (205.3 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

anycrc-0.3.0-cp39-cp39-macosx_11_0_arm64.whl (44.4 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

anycrc-0.3.0-cp39-cp39-macosx_10_9_x86_64.whl (48.3 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

anycrc-0.3.0-cp38-cp38-win_amd64.whl (40.6 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

anycrc-0.3.0-cp38-cp38-win32.whl (38.6 kB view hashes)

Uploaded CPython 3.8 Windows x86

anycrc-0.3.0-cp38-cp38-musllinux_1_1_x86_64.whl (211.1 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

anycrc-0.3.0-cp38-cp38-musllinux_1_1_i686.whl (209.8 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

anycrc-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (206.7 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

anycrc-0.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (203.2 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

anycrc-0.3.0-cp38-cp38-macosx_11_0_arm64.whl (44.7 kB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

anycrc-0.3.0-cp38-cp38-macosx_10_9_x86_64.whl (48.5 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

anycrc-0.3.0-cp37-cp37m-win_amd64.whl (41.0 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

anycrc-0.3.0-cp37-cp37m-win32.whl (38.6 kB view hashes)

Uploaded CPython 3.7m Windows x86

anycrc-0.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl (199.9 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

anycrc-0.3.0-cp37-cp37m-musllinux_1_1_i686.whl (198.1 kB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

anycrc-0.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (198.4 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

anycrc-0.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (195.8 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

anycrc-0.3.0-cp37-cp37m-macosx_10_9_x86_64.whl (48.7 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page