Table of Contents

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