CRC catalogue
The CrcStandard type (in the Bodu.IO.Hashing package) exposes a broad catalogue of named CRC parameter sets that can be passed to Crc for CRC computation. The catalogue is mechanically derived from the CRC RevEng project.
For walk-through usage of the CRC engine, see Using CRC.
Attribution
The CRC parameter sets in this catalogue are sourced from Greg Cook's CRC RevEng Catalogue of parameterized CRC algorithms at https://reveng.sourceforge.io/crc-catalogue/all.htm.
The catalogue is distributed as part of the CRC RevEng project at https://reveng.sourceforge.io/. Please consult the upstream page for the authoritative parameter definitions, alias history, and license terms that apply to the underlying data.
- Catalogue last fetched (UTC): 2026-04-20T08:57:51Z
- This page regenerated (UTC): 2026-04-20T22:24:42Z
- Entries in source: 113
Accessing standards
The catalogue is a lazy-materialized data table. Loading CrcStandard allocates only the packed spec rows and the per-entry cache slots - individual CrcStandard instances are constructed on first access and then memoized, so a process that uses only a handful of standards pays for only a handful of allocations.
Three entry points:
// 1. Strongly-typed common standards - most convenient for the usual suspects.
var crc = new Crc(CrcStandard.CRC32_ISOHDLC);
var crc = new Crc(CrcStandard.CRC32_ISCSI); // iSCSI / Castagnoli
var crc = new Crc(CrcStandard.CRC16_MODBUS);
// 2. By enum - covers every canonical catalogue entry (112 in total).
var crc = new Crc(CrcStandard.Get(CrcStandards.CRC8_SAEJ1850));
// 3. By name - resolves canonical names AND published aliases.
var crc1 = new Crc(CrcStandard.FromName("CRC-32/ISO-HDLC"));
var crc2 = new Crc(CrcStandard.FromName("PKZIP")); // same instance as crc1
// Iterate every catalogue standard
foreach (CrcStandard std in CrcStandard.All) { ... }
FromName is ordinal and case-sensitive. TryFromName returns false rather than throwing when a name is unknown.
Support policy
CrcStandard represents all scalar parameters as ulong, so the library can materialize any CRC of width 1-64 bits. Entries whose width exceeds 64 bits are listed below for completeness but are not exposed by CrcStandards and cannot be constructed through CrcStandard.
Aliases share a single catalogue instance with their canonical standard. CrcStandard.FromName resolves both canonical and alias names, so FromName("CRC-32") and FromName("CRC-32/ISO-HDLC") return the same instance.
Common standards (strongly-typed)
These are exposed as public static CrcStandard properties on CrcStandard for convenience - the underlying cache is still shared with the enum-based lookup.
| Name | Width | Property | Aliases |
|---|---|---|---|
| CRC-8/MAXIM-DOW | 8 | CrcStandard.CRC8_MAXIMDOW |
CRC-8/MAXIM, DOW-CRC |
| CRC-8/SMBUS | 8 | CrcStandard.CRC8_SMBUS |
CRC-8 |
| CRC-16/ARC | 16 | CrcStandard.CRC16_ARC |
ARC, CRC-16, CRC-16/LHA, CRC-IBM |
| CRC-16/IBM-3740 | 16 | CrcStandard.CRC16_IBM3740 |
CRC-16/AUTOSAR, CRC-16/CCITT-FALSE |
| CRC-16/KERMIT | 16 | CrcStandard.CRC16_KERMIT |
CRC-16/BLUETOOTH, CRC-16/CCITT, CRC-16/CCITT-TRUE, CRC-16/V-41-LSB, CRC-CCITT, KERMIT |
| CRC-16/MODBUS | 16 | CrcStandard.CRC16_MODBUS |
MODBUS |
| CRC-16/XMODEM | 16 | CrcStandard.CRC16_XMODEM |
CRC-16/ACORN, CRC-16/LTE, CRC-16/V-41-MSB, XMODEM, ZMODEM |
| CRC-32/BZIP2 | 32 | CrcStandard.CRC32_BZIP2 |
CRC-32/AAL5, CRC-32/DECT-B, B-CRC-32 |
| CRC-32/ISCSI | 32 | CrcStandard.CRC32_ISCSI |
CRC-32/BASE91-C, CRC-32/CASTAGNOLI, CRC-32/INTERLAKEN, CRC-32C, CRC-32/NVME |
| CRC-32/ISO-HDLC | 32 | CrcStandard.CRC32_ISOHDLC |
CRC-32, CRC-32/ADCCP, CRC-32/V-42, CRC-32/XZ, PKZIP |
| CRC-64/ECMA-182 | 64 | CrcStandard.CRC64_ECMA182 |
CRC-64 |
| CRC-64/XZ | 64 | CrcStandard.CRC64_XZ |
CRC-64/GO-ECMA |
Full catalogue
Access the following via CrcStandard.Get(CrcStandards.X) or CrcStandard.FromName("name").
| Name | Width | Class | Enum | Aliases | RevEng |
|---|---|---|---|---|---|
| CRC-3/GSM | 3 | academic | CrcStandards.CRC3_GSM |
- | spec |
| CRC-3/ROHC | 3 | academic | CrcStandards.CRC3_ROHC |
- | spec |
| CRC-4/G-704 | 4 | academic | CrcStandards.CRC4_G704 |
CRC-4/ITU |
spec |
| CRC-4/INTERLAKEN | 4 | academic | CrcStandards.CRC4_INTERLAKEN |
- | spec |
| CRC-5/EPC-C1G2 | 5 | attested | CrcStandards.CRC5_EPCC1G2 |
CRC-5/EPC |
spec |
| CRC-5/G-704 | 5 | academic | CrcStandards.CRC5_G704 |
CRC-5/ITU |
spec |
| CRC-5/USB | 5 | confirmed | CrcStandards.CRC5_USB |
- | spec |
| CRC-6/CDMA2000-A | 6 | attested | CrcStandards.CRC6_CDMA2000A |
- | spec |
| CRC-6/CDMA2000-B | 6 | academic | CrcStandards.CRC6_CDMA2000B |
- | spec |
| CRC-6/DARC | 6 | attested | CrcStandards.CRC6_DARC |
- | spec |
| CRC-6/G-704 | 6 | academic | CrcStandards.CRC6_G704 |
CRC-6/ITU |
spec |
| CRC-6/GSM | 6 | academic | CrcStandards.CRC6_GSM |
- | spec |
| CRC-7/MMC | 7 | academic | CrcStandards.CRC7_MMC |
CRC-7 |
spec |
| CRC-7/ROHC | 7 | academic | CrcStandards.CRC7_ROHC |
- | spec |
| CRC-7/UMTS | 7 | academic | CrcStandards.CRC7_UMTS |
- | spec |
| CRC-8/AUTOSAR | 8 | attested | CrcStandards.CRC8_AUTOSAR |
- | spec |
| CRC-8/BLUETOOTH | 8 | attested | CrcStandards.CRC8_BLUETOOTH |
- | spec |
| CRC-8/CDMA2000 | 8 | academic | CrcStandards.CRC8_CDMA2000 |
- | spec |
| CRC-8/DARC | 8 | attested | CrcStandards.CRC8_DARC |
- | spec |
| CRC-8/DVB-S2 | 8 | academic | CrcStandards.CRC8_DVBS2 |
- | spec |
| CRC-8/GSM-A | 8 | academic | CrcStandards.CRC8_GSMA |
- | spec |
| CRC-8/GSM-B | 8 | academic | CrcStandards.CRC8_GSMB |
- | spec |
| CRC-8/HITAG | 8 | attested | CrcStandards.CRC8_HITAG |
- | spec |
| CRC-8/I-432-1 | 8 | academic | CrcStandards.CRC8_I4321 |
CRC-8/ITU |
spec |
| CRC-8/I-CODE | 8 | attested | CrcStandards.CRC8_ICODE |
- | spec |
| CRC-8/LTE | 8 | academic | CrcStandards.CRC8_LTE |
- | spec |
| CRC-8/MAXIM-DOW | 8 | attested | CrcStandards.CRC8_MAXIMDOW |
CRC-8/MAXIM, DOW-CRC |
spec |
| CRC-8/MIFARE-MAD | 8 | attested | CrcStandards.CRC8_MIFAREMAD |
- | spec |
| CRC-8/NRSC-5 | 8 | attested | CrcStandards.CRC8_NRSC5 |
- | spec |
| CRC-8/OPENSAFETY | 8 | attested | CrcStandards.CRC8_OPENSAFETY |
- | spec |
| CRC-8/ROHC | 8 | academic | CrcStandards.CRC8_ROHC |
- | spec |
| CRC-8/SAE-J1850 | 8 | attested | CrcStandards.CRC8_SAEJ1850 |
- | spec |
| CRC-8/SMBUS | 8 | attested | CrcStandards.CRC8_SMBUS |
CRC-8 |
spec |
| CRC-8/TECH-3250 | 8 | attested | CrcStandards.CRC8_TECH3250 |
CRC-8/AES, CRC-8/EBU |
spec |
| CRC-8/WCDMA | 8 | third-party | CrcStandards.CRC8_WCDMA |
- | spec |
| CRC-10/ATM | 10 | attested | CrcStandards.CRC10_ATM |
CRC-10, CRC-10/I-610 |
spec |
| CRC-10/CDMA2000 | 10 | academic | CrcStandards.CRC10_CDMA2000 |
- | spec |
| CRC-10/GSM | 10 | academic | CrcStandards.CRC10_GSM |
- | spec |
| CRC-11/FLEXRAY | 11 | attested | CrcStandards.CRC11_FLEXRAY |
CRC-11 |
spec |
| CRC-11/UMTS | 11 | academic | CrcStandards.CRC11_UMTS |
- | spec |
| CRC-12/CDMA2000 | 12 | academic | CrcStandards.CRC12_CDMA2000 |
- | spec |
| CRC-12/DECT | 12 | academic | CrcStandards.CRC12_DECT |
X-CRC-12 |
spec |
| CRC-12/GSM | 12 | academic | CrcStandards.CRC12_GSM |
- | spec |
| CRC-12/UMTS | 12 | academic | CrcStandards.CRC12_UMTS |
CRC-12/3GPP |
spec |
| CRC-13/BBC | 13 | attested | CrcStandards.CRC13_BBC |
- | spec |
| CRC-14/DARC | 14 | attested | CrcStandards.CRC14_DARC |
- | spec |
| CRC-14/GSM | 14 | academic | CrcStandards.CRC14_GSM |
- | spec |
| CRC-15/CAN | 15 | academic | CrcStandards.CRC15_CAN |
CRC-15 |
spec |
| CRC-15/MPT1327 | 15 | attested | CrcStandards.CRC15_MPT1327 |
- | spec |
| CRC-16/ARC | 16 | attested | CrcStandards.CRC16_ARC |
ARC, CRC-16, CRC-16/LHA, CRC-IBM |
spec |
| CRC-16/CDMA2000 | 16 | academic | CrcStandards.CRC16_CDMA2000 |
- | spec |
| CRC-16/CMS | 16 | third-party | CrcStandards.CRC16_CMS |
- | spec |
| CRC-16/DDS-110 | 16 | attested | CrcStandards.CRC16_DDS110 |
- | spec |
| CRC-16/DECT-R | 16 | attested | CrcStandards.CRC16_DECTR |
R-CRC-16 |
spec |
| CRC-16/DECT-X | 16 | attested | CrcStandards.CRC16_DECTX |
X-CRC-16 |
spec |
| CRC-16/DNP | 16 | confirmed | CrcStandards.CRC16_DNP |
- | spec |
| CRC-16/EN-13757 | 16 | confirmed | CrcStandards.CRC16_EN13757 |
- | spec |
| CRC-16/GENIBUS | 16 | attested | CrcStandards.CRC16_GENIBUS |
CRC-16/DARC, CRC-16/EPC, CRC-16/EPC-C1G2, CRC-16/I-CODE |
spec |
| CRC-16/GSM | 16 | attested | CrcStandards.CRC16_GSM |
- | spec |
| CRC-16/IBM-3740 | 16 | attested | CrcStandards.CRC16_IBM3740 |
CRC-16/AUTOSAR, CRC-16/CCITT-FALSE |
spec |
| CRC-16/IBM-SDLC | 16 | attested | CrcStandards.CRC16_IBMSDLC |
CRC-16/ISO-HDLC, CRC-16/ISO-IEC-14443-3-B, CRC-16/X-25, CRC-B, X-25 |
spec |
| CRC-16/ISO-IEC-14443-3-A | 16 | attested | CrcStandards.CRC16_ISOIEC144433A |
CRC-A |
spec |
| CRC-16/KERMIT | 16 | attested | CrcStandards.CRC16_KERMIT |
CRC-16/BLUETOOTH, CRC-16/CCITT, CRC-16/CCITT-TRUE, CRC-16/V-41-LSB, CRC-CCITT, KERMIT |
spec |
| CRC-16/LJ1200 | 16 | third-party | CrcStandards.CRC16_LJ1200 |
- | spec |
| CRC-16/M17 | 16 | attested | CrcStandards.CRC16_M17 |
- | spec |
| CRC-16/MAXIM-DOW | 16 | attested | CrcStandards.CRC16_MAXIMDOW |
CRC-16/MAXIM |
spec |
| CRC-16/MCRF4XX | 16 | attested | CrcStandards.CRC16_MCRF4XX |
- | spec |
| CRC-16/MODBUS | 16 | attested | CrcStandards.CRC16_MODBUS |
MODBUS |
spec |
| CRC-16/NRSC-5 | 16 | attested | CrcStandards.CRC16_NRSC5 |
- | spec |
| CRC-16/OPENSAFETY-A | 16 | attested | CrcStandards.CRC16_OPENSAFETYA |
- | spec |
| CRC-16/OPENSAFETY-B | 16 | attested | CrcStandards.CRC16_OPENSAFETYB |
- | spec |
| CRC-16/PROFIBUS | 16 | attested | CrcStandards.CRC16_PROFIBUS |
CRC-16/IEC-61158-2 |
spec |
| CRC-16/RIELLO | 16 | third-party | CrcStandards.CRC16_RIELLO |
- | spec |
| CRC-16/SPI-FUJITSU | 16 | attested | CrcStandards.CRC16_SPIFUJITSU |
CRC-16/AUG-CCITT |
spec |
| CRC-16/T10-DIF | 16 | attested | CrcStandards.CRC16_T10DIF |
- | spec |
| CRC-16/TELEDISK | 16 | confirmed | CrcStandards.CRC16_TELEDISK |
- | spec |
| CRC-16/TMS37157 | 16 | attested | CrcStandards.CRC16_TMS37157 |
- | spec |
| CRC-16/UMTS | 16 | attested | CrcStandards.CRC16_UMTS |
CRC-16/BUYPASS, CRC-16/VERIFONE |
spec |
| CRC-16/USB | 16 | confirmed | CrcStandards.CRC16_USB |
- | spec |
| CRC-16/XMODEM | 16 | attested | CrcStandards.CRC16_XMODEM |
CRC-16/ACORN, CRC-16/LTE, CRC-16/V-41-MSB, XMODEM, ZMODEM |
spec |
| CRC-17/CAN-FD | 17 | academic | CrcStandards.CRC17_CANFD |
- | spec |
| CRC-21/CAN-FD | 21 | academic | CrcStandards.CRC21_CANFD |
- | spec |
| CRC-24/BLE | 24 | attested | CrcStandards.CRC24_BLE |
- | spec |
| CRC-24/FLEXRAY-A | 24 | attested | CrcStandards.CRC24_FLEXRAYA |
- | spec |
| CRC-24/FLEXRAY-B | 24 | attested | CrcStandards.CRC24_FLEXRAYB |
- | spec |
| CRC-24/INTERLAKEN | 24 | academic | CrcStandards.CRC24_INTERLAKEN |
- | spec |
| CRC-24/LTE-A | 24 | academic | CrcStandards.CRC24_LTEA |
- | spec |
| CRC-24/LTE-B | 24 | academic | CrcStandards.CRC24_LTEB |
- | spec |
| CRC-24/OPENPGP | 24 | attested | CrcStandards.CRC24_OPENPGP |
CRC-24 |
spec |
| CRC-24/OS-9 | 24 | attested | CrcStandards.CRC24_OS9 |
- | spec |
| CRC-30/CDMA | 30 | academic | CrcStandards.CRC30_CDMA |
- | spec |
| CRC-31/PHILIPS | 31 | confirmed | CrcStandards.CRC31_PHILIPS |
- | spec |
| CRC-32/AIXM | 32 | attested | CrcStandards.CRC32_AIXM |
CRC-32Q |
spec |
| CRC-32/AUTOSAR | 32 | attested | CrcStandards.CRC32_AUTOSAR |
- | spec |
| CRC-32/BASE91-D | 32 | confirmed | CrcStandards.CRC32_BASE91D |
CRC-32D |
spec |
| CRC-32/BZIP2 | 32 | attested | CrcStandards.CRC32_BZIP2 |
CRC-32/AAL5, CRC-32/DECT-B, B-CRC-32 |
spec |
| CRC-32/CD-ROM-EDC | 32 | academic | CrcStandards.CRC32_CDROMEDC |
- | spec |
| CRC-32/CKSUM | 32 | attested | CrcStandards.CRC32_CKSUM |
CKSUM, CRC-32/POSIX |
spec |
| CRC-32/ISCSI | 32 | attested | CrcStandards.CRC32_ISCSI |
CRC-32/BASE91-C, CRC-32/CASTAGNOLI, CRC-32/INTERLAKEN, CRC-32C, CRC-32/NVME |
spec |
| CRC-32/ISO-HDLC | 32 | attested | CrcStandards.CRC32_ISOHDLC |
CRC-32, CRC-32/ADCCP, CRC-32/V-42, CRC-32/XZ, PKZIP |
spec |
| CRC-32/JAMCRC | 32 | confirmed | CrcStandards.CRC32_JAMCRC |
JAMCRC |
spec |
| CRC-32/MEF | 32 | attested | CrcStandards.CRC32_MEF |
- | spec |
| CRC-32/MPEG-2 | 32 | attested | CrcStandards.CRC32_MPEG2 |
- | spec |
| CRC-32/XFER | 32 | confirmed | CrcStandards.CRC32_XFER |
XFER |
spec |
| CRC-40/GSM | 40 | academic | CrcStandards.CRC40_GSM |
- | spec |
| CRC-64/ECMA-182 | 64 | academic | CrcStandards.CRC64_ECMA182 |
CRC-64 |
spec |
| CRC-64/GO-ISO | 64 | confirmed | CrcStandards.CRC64_GOISO |
- | spec |
| CRC-64/MS | 64 | attested | CrcStandards.CRC64_MS |
- | spec |
| CRC-64/NVME | 64 | attested | CrcStandards.CRC64_NVME |
- | spec |
| CRC-64/REDIS | 64 | academic | CrcStandards.CRC64_REDIS |
- | spec |
| CRC-64/WE | 64 | confirmed | CrcStandards.CRC64_WE |
- | spec |
| CRC-64/XZ | 64 | attested | CrcStandards.CRC64_XZ |
CRC-64/GO-ECMA |
spec |
Not supported (width exceeds 64 bits)
The following standards are listed in the source catalogue but are not exposed by CrcStandard because their width exceeds the 64-bit scalar representation used by this library.
| Name | Width | Class | RevEng |
|---|---|---|---|
| CRC-82/DARC | 82 | attested | spec |
Regeneration
This page and the generated C# sources are produced by the scripts in tools/. To refresh the data from upstream:
pwsh ./tools/Fetch-CrcSpecs.ps1
pwsh ./tools/Generate-CrcCatalog.ps1 # regenerates CrcStandards.cs and CrcStandard.Catalog.cs
pwsh ./tools/Generate-CrcCatalogTests.ps1 # regenerates CrcTests.Catalog.cs
pwsh ./tools/Generate-CrcDocs.ps1 # regenerates this page
See also
- Hashing & Cryptography guides - every guide in this topic, across Bodu.IO.Hashing and Bodu.Security.Cryptography.
- Bodu.IO.Hashing guides overview - every guide in this library.