How to calculate CRC32 checksum in Python
Created
Modified
Cyclic redundancy check
A cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to digital data.
Using zlib.crc32 Function
Computes a CRC (Cyclic Redundancy Check) checksum of data. The result is an unsigned 32-bit integer. If value is present, it is used as the starting value of the checksum; otherwise, a default value of 0 is used.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Import module
import zlib
s = b'Python'
# using zlib.crc32() method
t = zlib.crc32(s)
print(t)
# lower
print(zlib.crc32(b'python'))
2742599054 2765404344
Changed in version 3.0: The result is always unsigned.
CRC-32 algorithm
This is a practical algorithm for the CRC-32 variant of CRC.
Function CRC32
Input:
data: Bytes // Array of bytes
Output:
crc32: UInt32 // 32-bit unsigned CRC-32 value
// Initialize CRC-32 to starting value
crc32 ← 0xFFFFFFFF
for each byte in data do
nLookupIndex ← (crc32 xor byte) and 0xFF;
crc32 ← (crc32 shr 8) xor CRCTable[nLookupIndex] // CRCTable is an array of 256 32-bit constants
// Finalize the CRC-32 value by inverting all the bits
crc32 ← crc32 xor 0xFFFFFFFF
return crc32