Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Cyclic redundancy check
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Polynomial representations == The table below lists only the polynomials of the various algorithms in use. Variations of a particular protocol can impose pre-inversion, post-inversion and reversed bit ordering as described above. For example, the CRC32 used in Gzip and Bzip2 use the same polynomial, but Gzip employs reversed bit ordering, while Bzip2 does not.<ref name="cook-catalogue" /> Note that even parity polynomials in [[GF(2)]] with degree greater than 1 are never primitive. Even parity polynomial marked as primitive in this table represent a primitive polynomial multiplied by <math> \left(x+1\right)</math>. The most significant bit of a polynomial is always 1, and is not shown in the hex representations. {{anchor|table}} <div style="max-width: 100%; overflow-y: scroll"> {| class="wikitable" ! rowspan="2" | Name ! rowspan="2" | Uses ! colspan="4" | [[Mathematics of cyclic redundancy checks#Polynomial representations|Polynomial representations]] ! rowspan="2" | [[Parity (telecommunication)|Parity]]<ref>CRCs with even parity detect any odd number of bit errors, at the expense of lower hamming distance for long payloads. Note that parity is computed over the entire generator polynomial, including implied 1 at the beginning or the end. For example, the full representation of CRC-1 is 0x3, which has two 1 bits. Thus, its parity is even.</ref> ! rowspan="2" | Primitive<ref name="users.ece.cmu.edu">{{cite web|url=https://users.ece.cmu.edu/~koopman/crc/crc32.html|title=32 Bit CRC Zoo|website=users.ece.cmu.edu|access-date=5 November 2017|archive-date=19 March 2018|archive-url=https://web.archive.org/web/20180319125501/http://users.ece.cmu.edu/~koopman/crc/crc32.html|url-status=live}}</ref> ! colspan="15" | Maximum bits of payload by [[Hamming distance]]<ref>Payload means length exclusive of CRC field. A Hamming distance of ''d'' means that ''d'' β 1 bit errors can be detected and β(''d'' β 1)/2β bit errors can be corrected</ref><ref name="koop02" /><ref name="users.ece.cmu.edu"/> |- ! Normal ! [[Mathematics of cyclic redundancy checks#Reversed representations and reciprocal polynomials|Reversed]] ! [[Mathematics of cyclic redundancy checks#Reciprocal polynomials|Reciprocal]] ! Reversed reciprocal ! β₯ 16 ! 15 ! 14 ! 13 ! 12 ! 11 ! 10 ! 9 ! 8 ! 7 ! 6 ! 5 ! 4 ! 3 ! 2<ref>is always achieved for arbitrarily long messages</ref> |- | rowspan="2" | CRC-1 | rowspan="2" | most hardware; also known as ''[[parity bit]]'' | 0x1 | 0x1 | 0x1 | 0x1 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x + 1</math> |- | rowspan="2" | CRC-3-[[GSM]] | rowspan="2" | mobile networks<ref name="ts-100-909">{{Cite book|title=ETSI TS 100 909|version=V8.9.0|date=January 2005|publisher=European Telecommunications Standards Institute|location=Sophia Antipolis, France|url=https://www.etsi.org/deliver/etsi_ts/100900_100999/100909/08.09.00_60/ts_100909v080900p.pdf|access-date=21 October 2016|archive-date=17 April 2018|archive-url=https://web.archive.org/web/20180417050648/http://www.etsi.org/deliver/etsi_ts/100900_100999/100909/08.09.00_60/ts_100909v080900p.pdf|url-status=live}}</ref> | 0x3 | 0x6 | 0x5 | 0x5 | rowspan="2" {{Bad|odd}} | rowspan="2" {{Good|yes}}<ref name="koop_crc3">{{cite web|url=https://users.ece.cmu.edu/~koopman/crc/crc3.html|title=3 Bit CRC Zoo|website=users.ece.cmu.edu|access-date=19 January 2018|archive-date=7 April 2018|archive-url=https://web.archive.org/web/20180407230324/http://users.ece.cmu.edu/~koopman/crc/crc3.html|url-status=live}}</ref> | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | 4 | rowspan="2" | β |- | colspan="4" | <math>x^3 + x + 1</math> |- | rowspan="2" | CRC-4-ITU | rowspan="2" | [[ITU-T]] [http://www.itu.int/rec/T-REC-G.704-199810-I/en G.704], p. 12 | 0x3 | 0xC | 0x9 | 0x9 | rowspan="2" {{Bad|odd}} |- | colspan="4" | <math>x^4 + x + 1</math> |- | rowspan="2" | CRC-5-EPC | rowspan="2" | [[Radio-frequency identification|Gen 2 RFID]]<ref name="gen-2-spec">{{Cite book|title=Class-1 Generation-2 UHF RFID Protocol|version=1.2.0|publisher=[[EPCglobal]]|url=http://www.gs1.org/gsmp/kc/epcglobal/uhfc1g2/uhfc1g2_1_2_0-standard-20080511.pdf|date=23 October 2008|access-date=4 July 2012|page=35|archive-date=19 March 2012|archive-url=https://web.archive.org/web/20120319154207/http://www.gs1.org/gsmp/kc/epcglobal/uhfc1g2/uhfc1g2_1_2_0-standard-20080511.pdf|url-status=live}} (Table 6.12)</ref> | 0x09 | 0x12 | 0x05 | 0x14 | rowspan="2" {{Bad|odd}} |- | colspan="4" | <math>x^5 + x^3 + 1</math> |- | rowspan="2" | CRC-5-ITU | rowspan="2" | ITU-T [http://www.itu.int/rec/T-REC-G.704-199810-I/en G.704], p. 9 | 0x15 | 0x15 | 0x0B | 0x1A | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^5 + x^4 + x^2 + 1</math> |- | rowspan="2" | CRC-5-USB | rowspan="2" | [[Universal Serial Bus|USB]] token packets | 0x05 | 0x14 | 0x09 | 0x12 | rowspan="2" {{Bad|odd}} |- | colspan="4" | <math>x^5 + x^2 + 1</math> |- | CRC-6-[[CDMA2000]]-A | mobile networks<ref name="cdma2000-spec">{{Cite book|publisher=3rd Generation Partnership Project 2|date=October 2005|title=Physical layer standard for cdma2000 spread spectrum systems|version=Revision D version 2.0|pages=2β89β2β92|url=http://www.3gpp2.org/public_html/specs/C.S0002-D_v2.0_051006.pdf|access-date=14 October 2013|archive-url=https://web.archive.org/web/20131116065606/http://www.3gpp2.org/public_html/specs/C.S0002-D_v2.0_051006.pdf|archive-date=16 November 2013|url-status=dead}}</ref> | 0x27 | 0x39 | 0x33 | 0x33 | {{Bad|odd}} |- | CRC-6-[[CDMA2000]]-B | mobile networks<ref name="cdma2000-spec" /> | 0x07 | 0x38 | 0x31 | 0x23 | {{Good|even}} |- | CRC-6-DARC | [[Data Radio Channel]]<ref name="en-300-751">{{Cite book|title=ETSI EN 300 751|version=V1.2.1|date=January 2003|publisher=European Telecommunications Standards Institute|location=Sophia Antipolis, France|url=http://www.etsi.org/deliver/etsi_en/300700_300799/300751/01.02.01_60/en_300751v010201p.pdf|section=11. Error correction strategy|pages=67β8|access-date=26 January 2016|archive-date=28 December 2015|archive-url=https://web.archive.org/web/20151228050128/http://www.etsi.org/deliver/etsi_en/300700_300799/300751/01.02.01_60/en_300751v010201p.pdf|url-status=live}}</ref> | 0x19 | 0x26 | 0x0D | 0x2C | {{Good|even}} |- | rowspan="2" | CRC-6-[[GSM]] | rowspan="2" | mobile networks<ref name="ts-100-909" /> | 0x2F | 0x3D | 0x3B | 0x37 | rowspan="2" {{Good|even}} | rowspan="2" {{Good|yes}}<ref name="koop_crc6">{{cite web|url=https://users.ece.cmu.edu/~koopman/crc/crc6.html|title=6 Bit CRC Zoo|website=users.ece.cmu.edu|access-date=19 January 2018|archive-date=7 April 2018|archive-url=https://web.archive.org/web/20180407230334/http://users.ece.cmu.edu/~koopman/crc/crc6.html|url-status=live}}</ref> | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | 1 | rowspan="2" | 1 | rowspan="2" | 25 | rowspan="2" | 25 | rowspan="2" | β |- | colspan="4" | <math>x^6 + x^5 + x^3 + x^2 + x + 1</math> |- | rowspan="2" | CRC-6-ITU | rowspan="2" | ITU-T [http://www.itu.int/rec/T-REC-G.704-199810-I/en G.704], p. 3 | 0x03 | 0x30 | 0x21 | 0x21 | rowspan="2" {{Bad|odd}} |- | colspan="4" | <math>x^6 + x + 1</math> |- | rowspan="2" | CRC-7 | rowspan="2" | telecom systems, ITU-T [http://www.itu.int/rec/T-REC-G.707/en G.707], ITU-T [http://www.itu.int/rec/T-REC-G.832/en G.832], [[MultiMediaCard|MMC]], [[Secure Digital card|SD]] | 0x09 | 0x48 | 0x11 | 0x44 | rowspan="2" {{Bad|odd}} |- | colspan="4" | <math>x^7 + x^3 + 1</math> |- | CRC-7-MVB | [[Train Communication Network]], [[IEC 60870-5]]<ref name="chakravarty-thesis">{{Cite thesis|last=Chakravarty|first=Tridib|others=Philip Koopman, advisor|date=December 2001|title=Performance of Cyclic Redundancy Codes for Embedded Networks|publisher=Carnegie Mellon University |url=http://www.ece.cmu.edu/~koopman/thesis/chakravarty.pdf|access-date=8 July 2013|pages=5,18|archive-date=1 January 2014|archive-url=https://web.archive.org/web/20140101132228/http://www.ece.cmu.edu/~koopman/thesis/chakravarty.pdf|url-status=live}}</ref> | 0x65 | 0x53 | 0x27 | 0x72 | {{Bad|odd}} |- | rowspan="2" | CRC-8 | rowspan="2" | [[DVB-S2]]<ref name="en-302-307">{{Cite book|title=EN 302 307|version=V1.3.1|date=March 2013|publisher=European Telecommunications Standards Institute|location=Sophia Antipolis, France|url=https://www.etsi.org/deliver/etsi_en/302300_302399/302307/01.03.01_60/en_302307v010301p.pdf|section=5.1.4 CRC-8 encoder (for packetized streams only)|page=17|access-date=29 July 2016|archive-date=30 August 2017|archive-url=https://web.archive.org/web/20170830061535/http://www.etsi.org/deliver/etsi_en/302300_302399/302307/01.03.01_60/en_302307v010301p.pdf|url-status=live}}</ref> | 0xD5 | 0xAB | 0x57 | 0xEA<ref name="koop04" /> | rowspan="2" {{Good|even}} | rowspan="2" {{Bad|no}}<ref name="koop_crc8">{{cite web|url=https://users.ece.cmu.edu/~koopman/crc/crc8.html|title=8 Bit CRC Zoo|website=users.ece.cmu.edu|access-date=19 January 2018|archive-date=7 April 2018|archive-url=https://web.archive.org/web/20180407224301/http://users.ece.cmu.edu/~koopman/crc/crc8.html|url-status=live}}</ref> | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | 2 | rowspan="2" | 2 | rowspan="2" | 85 | rowspan="2" | 85 | rowspan="2" | β |- | colspan="4" | <math>x^8 + x^7 + x^6 + x^4 + x^2 + 1</math> |- | rowspan="2" | CRC-8-[[AUTOSAR]] | rowspan="2" | automotive integration,<ref name="autosar-crc">{{Cite book|title=Specification of CRC Routines|version=4.2.2|date=22 July 2015|publisher=AUTOSAR|location=Munich|url=https://www.autosar.org/fileadmin/files/releases/4-2/software-architecture/safety-and-security/standard/AUTOSAR_SWS_CRCLibrary.pdf|section=7.2.1.2 8-bit 0x2F polynomial CRC Calculation|page=24|access-date=24 July 2016|archive-url=https://web.archive.org/web/20160724123829/https://www.autosar.org/fileadmin/files/releases/4-2/software-architecture/safety-and-security/standard/AUTOSAR_SWS_CRCLibrary.pdf|archive-date=24 July 2016|url-status=dead}}</ref> [[OpenSafety]]<ref name="opensafety-profile">{{Cite book|title=openSAFETY Safety Profile Specification: EPSG Working Draft Proposal 304|version=1.4.0|date=13 March 2013|publisher=Ethernet POWERLINK Standardisation Group|location=Berlin|url=http://www.ethernet-powerlink.org/en/downloads/technical-documents/action/open-download/download/epsg-wdp-304-v-1-4-0/?no_cache=1|section=5.1.1.8 Cyclic Redundancy Check field (CRC-8 / CRC-16)|page=42|access-date=22 July 2016|archive-url=https://web.archive.org/web/20170812202348/http://www.ethernet-powerlink.org/en/downloads/technical-documents/action/open-download/download/epsg-wdp-304-v-1-4-0/?no_cache=1|archive-date=12 August 2017|url-status=dead}}</ref> | 0x2F | 0xF4 | 0xE9 | 0x97<ref name="koop04" /> | rowspan="2" {{Good|even}} | rowspan="2" {{Good|yes}}<ref name="koop_crc8" /> | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | 3 | rowspan="2" | 3 | rowspan="2" | 119 | rowspan="2" | 119 | rowspan="2" | β |- | colspan="4" | <math>x^8 + x^5 + x^3 + x^2 + x + 1</math> |- | rowspan="2" | CRC-8-[[Bluetooth]] | rowspan="2" | wireless connectivity<ref name="core-4.2">{{Cite book|title=Specification of the Bluetooth System|volume=2|section=B.7.1.1 HEC generation|pages=144β5|publisher=Bluetooth SIG|date=2 December 2014|url=https://www.bluetooth.org/DocMan/handlers/DownloadDoc.ashx?doc_id=286439|access-date=20 October 2014|archive-date=26 March 2015|archive-url=https://web.archive.org/web/20150326224908/https://www.bluetooth.org/DocMan/handlers/DownloadDoc.ashx?doc_id=286439|url-status=live}}</ref> | 0xA7 | 0xE5 | 0xCB | 0xD3 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^8 + x^7 + x^5 + x^2 + x + 1</math> |- | rowspan="2" | CRC-8-[[CCITT]] | rowspan="2" | ITU-T [http://www.itu.int/rec/T-REC-I.432.1-199902-I/en I.432.1 (02/99)]; [[Asynchronous Transfer Mode|ATM]] [[Header Error Correction|HEC]], [[ISDN]] HEC and cell delineation, [[System Management Bus#Packet Error Checking|SMBus PEC]] | 0x07 | 0xE0 | 0xC1 | 0x83 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^8 + x^2 + x + 1</math> |- | rowspan="2" | CRC-8-[[Dallas Semiconductor|Dallas]]/[[Maxim Integrated Products|Maxim]] | rowspan="2" | [[1-Wire]] [[Bus (computing)|bus]]<ref name="Whitfield01">{{Cite web|first=Harry |last=Whitfield|url=http://homepages.cs.ncl.ac.uk/harry.whitfield/home.formal/CRCs.html|title=XFCNs for Cyclic Redundancy Check Calculations|archive-url=https://web.archive.org/web/20050525224339/http://homepages.cs.ncl.ac.uk/harry.whitfield/home.formal/CRCs.html|archive-date=25 May 2005|date=24 April 2001}}</ref> | 0x31 | 0x8C | 0x19 | 0x98 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^8 + x^5 + x^4 + 1</math> |- | rowspan="2" | CRC-8-DARC | rowspan="2" | [[Data Radio Channel]]<ref name="en-300-751" /> | 0x39 | 0x9C | 0x39 | 0x9C | rowspan="2" {{Bad|odd}} |- | colspan="4" | <math>x^8 + x^5 + x^4 + x^3 + 1</math> |- | rowspan="2" | CRC-8-[[GSM]]-B | rowspan="2" | mobile networks<ref name="ts-100-909" /> | 0x49 | 0x92 | 0x25 | 0xA4 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^8 + x^6 + x^3 + 1</math> |- | rowspan="2" | CRC-8-[[SAE J1850]] | rowspan="2" | [[AES3]]; [[On-board diagnostics|OBD]] | 0x1D | 0xB8 | 0x71 | 0x8E | rowspan="2" {{Bad|odd}} |- | colspan="4" | <math>x^8 + x^4 + x^3 + x^2 + 1</math> |- | rowspan="2" | CRC-8-[[W-CDMA (UMTS)|WCDMA]] | rowspan="2" | mobile networks<ref name="cdma2000-spec" /><ref name="richardson-wcdma">{{Cite book|last=Richardson|first=Andrew|title=WCDMA Handbook |publisher=Cambridge University Press|date=17 March 2005|isbn=978-0-521-82815-4|page=223|url=https://books.google.com/books?id=yN5lve5L4vwC&pg=PA223}}</ref> | 0x9B | 0xD9 | 0xB3 | 0xCD<ref name="koop04" /> | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^8 + x^7 + x^4 + x^3 + x + 1</math> |- | rowspan="2" | CRC-10 | rowspan="2" | ATM; ITU-T [http://www.itu.int/rec/T-REC-I.610/en I.610] | 0x233 | 0x331 | 0x263 | 0x319 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{10} + x^9 + x^5 + x^4 + x + 1</math> |- | CRC-10-[[CDMA2000]] | mobile networks<ref name="cdma2000-spec" /> | 0x3D9 | 0x26F | 0x0DF | 0x3EC | {{Good|even}} |- | CRC-10-[[GSM]] | mobile networks<ref name="ts-100-909" /> | 0x175 | 0x2BA | 0x175 | 0x2BA | {{Bad|odd}} |- | rowspan="2" | CRC-11 | rowspan="2" | [[FlexRay]]<ref name="flexray-spec">{{Cite book|title=FlexRay Protocol Specification|version=3.0.1|publisher=Flexray Consortium|date=October 2010|page=114}} (4.2.8 Header CRC (11 bits))</ref> | 0x385 | 0x50E | 0x21D | 0x5C2 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{11} + x^9 + x^8 + x^7 + x^2 + 1</math> |- | rowspan="2" | CRC-12 | rowspan="2" | telecom systems<ref>{{Cite journal | last = Perez | first = A. | title = Byte-Wise CRC Calculations | journal = IEEE Micro | volume = 3 | issue = 3 | pages = 40β50 | year = 1983 | doi = 10.1109/MM.1983.291120| s2cid = 206471618 }}</ref><ref>{{Cite journal | last1 = Ramabadran | first1 = T.V. | last2 = Gaitonde | first2 = S.S. | title = A tutorial on CRC computations | journal = IEEE Micro | volume = 8 | issue = 4 | year = 1988 | pages = 62β75 | doi = 10.1109/40.7773 | s2cid = 10216862 }}</ref> | 0x80F | 0xF01 | 0xE03 | 0xC07<ref name="koop04" /> | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{12} + x^{11} + x^3 + x^2 + x + 1</math> |- | CRC-12-[[CDMA2000]] | mobile networks<ref name="cdma2000-spec" /> | 0xF13 | 0xC8F | 0x91F | 0xF89 | {{Good|even}} |- | CRC-12-[[GSM]] | mobile networks<ref name="ts-100-909" /> | 0xD31 | 0x8CB | 0x197 | 0xE98 | {{Bad|odd}} |- | rowspan="2" | CRC-13-BBC | rowspan="2" | Time signal, [[Radio teleswitch]]<ref>{{Cite web |url=http://www.freescale.com/files/microcontrollers/doc/app_note/AN1597.pdf |title=Longwave Radio Data Decoding using and HC11 and an MC3371|id=AN1597/D |publisher=Freescale Semiconductor |date=2004 |archive-date=24 September 2015 |archive-url=https://web.archive.org/web/20150924015512/http://www.freescale.com/files/microcontrollers/doc/app_note/AN1597.pdf |url-status=dead }}</ref><ref>{{Cite book|last1=Ely|first1=S.R.|last2=Wright|first2=D.T.|title=L.F. Radio-Data: specification of BBC experimental transmissions 1982|publisher=Research Department, Engineering Division, The British Broadcasting Corporation|date=March 1982|page=9|url=http://downloads.bbc.co.uk/rd/pubs/reports/1982-02.pdf|access-date=11 October 2013|archive-date=12 October 2013|archive-url=https://web.archive.org/web/20131012064432/http://downloads.bbc.co.uk/rd/pubs/reports/1982-02.pdf|url-status=live}}</ref> | 0x1CF5 | 0x15E7 | 0x0BCF | 0x1E7A | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{13} + x^{12} + x^{11} + x^{10} + x^7 + x^6 + x^5 + x^4 + x^2 + 1</math> |- | CRC-14-DARC | [[Data Radio Channel]]<ref name="en-300-751" /> | 0x0805 | 0x2804 | 0x1009 | 0x2402 | {{Good|even}} |- | CRC-14-[[GSM]] | mobile networks<ref name="ts-100-909" /> | 0x202D | 0x2D01 | 0x1A03 | 0x3016 | {{Good|even}} |- id="CRC-15-CAN" | rowspan="2" | CRC-15-[[Controller Area Network|CAN]] | rowspan="2" | | 0xC599<ref name="cypress-psoc">{{Cite book|date=20 February 2013|institution=Cypress Semiconductor|title=Cyclic Redundancy Check (CRC): PSoC Creatorβ’ Component Datasheet|page=4|url=http://www.cypress.com/file/128066/download|access-date=26 January 2016|archive-date=2 February 2016|archive-url=https://web.archive.org/web/20160202085601/http://www.cypress.com/file/128066/download|url-status=live}}</ref><ref name="cia-can-crc">{{Cite web|url = http://www.can-cia.org/can-knowledge/can/crc/|title = Cyclic redundancy check (CRC) in CAN frames|access-date = 26 January 2016|website = CAN in Automation|archive-date = 1 February 2016|archive-url = https://web.archive.org/web/20160201145928/http://www.can-cia.org/can-knowledge/can/crc/|url-status = live}}</ref> | 0x4CD1 | 0x19A3 | 0x62CC | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{15} + x^{14} + x^{10} + x^8 + x^7 + x^4 + x^3 + 1 </math> |- | CRC-15-[[MPT1327]] |<ref name="mpt1327">{{Cite book |date=June 1997 |title=A signalling standard for trunked private land mobile radio systems (MPT 1327) |edition=3rd |publisher=[[Ofcom]] |section=3.2.3 Encoding and error checking |page=3 |url=http://www.ofcom.org.uk/static/archive/ra/publication/mpt/mpt_pdf/mpt1327.pdf |access-date=16 July 2012 |archive-date=14 July 2012 |archive-url=https://web.archive.org/web/20120714015950/http://www.ofcom.org.uk/static/archive/ra/publication/mpt/mpt_pdf/mpt1327.pdf |url-status=live }}</ref> | 0x6815 | 0x540B | 0x2817 | 0x740A | {{Bad|odd}} |- | CRC-16-Chakravarty | Optimal for payloads β€64 bits<ref name="chakravarty-thesis" /> | 0x2F15 | 0xA8F4 | 0x51E9 | 0x978A | {{Bad|odd}} |- | CRC-16-[[ARINC]] | [[Aircraft Communications Addressing and Reporting System|ACARS]] applications<ref name="rehmann-acars">{{Cite web | url=http://ntl.bts.gov/lib/1000/1200/1290/tn95_66.pdf | title=Air Ground Data Link VHF Airline Communications and Reporting System (ACARS) Preliminary Test Report | date=February 1995 | page=5 | last1=Rehmann | first1=Albert | last2=Mestre | first2=JosΓ© D. | publisher=Federal Aviation Authority Technical Center | access-date=7 July 2012 | archive-date=2 August 2012 | archive-url=https://web.archive.org/web/20120802065800/http://ntl.bts.gov/lib/1000/1200/1290/tn95_66.pdf | url-status=dead }}</ref> | 0xA02B | 0xD405 | 0xA80B | 0xD015 | {{Bad|odd}} |- | rowspan="2" | CRC-16-CCITT | rowspan="2" | [[X.25]], [[ITU-T V.41|V.41]], [[HDLC]] ''FCS'', [[XMODEM]], [[Bluetooth]], [[PACTOR]], [[Secure Digital card|SD]], [[DigRF]], many others; known as ''CRC-CCITT'' | 0x1021 | 0x8408 | 0x811 | 0x8810<ref name="koop04" /> | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{16} + x^{12} + x^5 + 1</math> |- | CRC-16-[[CDMA2000]] | mobile networks<ref name="cdma2000-spec" /> | 0xC867 | 0xE613 | 0xCC27 | 0xE433 | {{Bad|odd}} |- | rowspan="2" | CRC-16-[[Digital Enhanced Cordless Telecommunications|DECT]] | rowspan="2" | cordless telephones<ref name="en-300-175-3">{{Cite book|title=ETSI EN 300 175-3|version=V2.5.1|date=August 2013|publisher=European Telecommunications Standards Institute|location=Sophia Antipolis, France|url=http://www.etsi.org/deliver/etsi_en/300100_300199/30017503/02.05.01_60/en_30017503v020501p.pdf|section=6.2.5 Error control|pages=99,101|access-date=26 January 2016|archive-date=1 July 2015|archive-url=https://web.archive.org/web/20150701125736/http://www.etsi.org/deliver/etsi_en/300100_300199/30017503/02.05.01_60/en_30017503v020501p.pdf|url-status=live}}</ref> | 0x0589 | 0x91A0 | 0x2341 | 0x82C4 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{16} + x^{10} + x^8 + x^7 + x^3 + 1</math> |- | rowspan="2" | CRC-16-[[International Committee for Information Technology Standards|T10]]-[[Data Integrity Field|DIF]] | rowspan="2" | [[SCSI]] DIF | 0x8BB7<ref name="thaler-t10-selection">{{Cite web|last=Thaler|first=Pat|author-link=Pat Thaler|title=16-bit CRC polynomial selection|publisher=INCITS T10|date=28 August 2003|url=http://www.t10.org/ftp/t10/document.03/03-290r0.pdf|access-date=11 August 2009 |archive-date=28 July 2011|archive-url=https://web.archive.org/web/20110728081616/http://www.t10.org/ftp/t10/document.03/03-290r0.pdf|url-status=live}}</ref> | 0xEDD1 | 0xDBA3 | 0xC5DB | rowspan="2" {{Bad|odd}} |- | colspan="4" | <math>x^{16} + x^{15} + x^{11} + x^{9} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1</math> |- | rowspan="2" | CRC-16-[[DNP3|DNP]] | rowspan="2" | DNP, [[IEC 60870-5|IEC 870]], [[Meter-Bus|M-Bus]] | 0x3D65 | 0xA6BC | 0x4D79 | 0x9EB2 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{16} + x^{13} + x^{12} + x^{11} + x^{10} + x^8 + x^6 + x^5 + x^2 + 1</math> |- | rowspan="2" | CRC-16-[[IBM]] | rowspan="2" | [[Binary Synchronous Communications|Bisync]], [[Modbus]], [[Universal Serial Bus|USB]], [[ANSI]] [https://web.archive.org/web/20091001172850/http://www.incits.org/press/1997/pr97020.htm X3.28], SIA DC-07, many others; also known as ''CRC-16'' and ''CRC-16-ANSI'' | 0x8005 | 0xA001 | 0x4003 | 0xC002 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{16} + x^{15} + x^2 + 1</math> |- | CRC-16-[[OpenSafety]]-A | safety fieldbus<ref name="opensafety-profile" /> | 0x5935 | 0xAC9A | 0x5935 | 0xAC9A<ref name="koop04" /> | {{Bad|odd}} |- | CRC-16-[[OpenSafety]]-B | safety fieldbus<ref name="opensafety-profile" /> | 0x755B | 0xDAAE | 0xB55D | 0xBAAD<ref name="koop04" /> | {{Bad|odd}} |- | CRC-16-[[Profibus]] | fieldbus networks<ref name="profibus-spec">{{Cite book|title=PROFIBUS Specification Normative Parts|version=1.0|publisher=Profibus International|date=March 1998|volume=9|section=8.8.4 Check Octet (FCS)|page=906|url=https://www.kuebler.com/PDFs/Feldbus_Multiturn/specification_DP.pdf|access-date=9 July 2016|archive-url=https://web.archive.org/web/20081116195826/http://www.kuebler.com/PDFs/Feldbus_Multiturn/specification_DP.pdf|archive-date=16 November 2008|url-status=dead}}</ref> | 0x1DCF | 0xF3B8 | 0xE771 | 0x8EE7 | {{Bad|odd}} |- | Fletcher-16 | Used in [[Adler-32]] A & B Checksums | colspan="4" | Often confused to be a CRC, but actually a checksum; see [[Fletcher's checksum]] |- | CRC-17-CAN | CAN FD<ref name="can-fd-spec">{{Cite book|title=CAN with Flexible Data-Rate Specification|version=1.0|publisher=Robert Bosch GmbH|date=17 April 2012|page=13|url=http://www.bosch-semiconductors.de/media/pdf_1/canliteratur/can_fd_spec.pdf|url-status=dead|archive-url=https://web.archive.org/web/20130822124728/http://www.bosch-semiconductors.de/media/pdf_1/canliteratur/can_fd_spec.pdf|archive-date=22 August 2013}} (3.2.1 DATA FRAME)</ref> | 0x1685B | 0x1B42D | 0x1685B | 0x1B42D | {{Good|even}} |- | CRC-21-CAN | CAN FD<ref name="can-fd-spec" /> | 0x102899 | 0x132281 | 0x064503 | 0x18144C | {{Good|even}} |- | rowspan="2" | CRC-24 | rowspan="2" | [[FlexRay]]<ref name="flexray-spec" /> | 0x5D6DCB | 0xD3B6BA | 0xA76D75 | 0xAEB6E5 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{24} + x^{22} + x^{20} + x^{19} + x^{18} + x^{16} + x^{14} + x^{13} + x^{11} + x^{10} + x^8 + x^7 + x^6 + x^3 + x + 1</math> |- | rowspan="2" | CRC-24-[[Radix-64]] | rowspan="2" | [[Pretty Good Privacy#OpenPGP|OpenPGP]], [[RTCM]]104v3 | 0x864CFB | 0xDF3261 | 0xBE64C3 | 0xC3267D | rowspan="2" {{Good|even}} |- | colspan="4" | <math> x^{24} + x^{23} + x^{18} + x^{17} + x^{14} + x^{11} + x^{10} + x^7 + x^6 + x^5 + x^4 + x^3 + x + 1 </math> |- | rowspan="2" | CRC-24-[[WCDMA]] | rowspan="2" | Used in [[OS-9|OS-9 RTOS]]. Residue = 0x800FE3.<ref>{{cite web|url=http://www.roug.org/soren/6809/os9sysprog.html#f.crc|title=OS-9 Operating System System Programmer's Manual|website=roug.org|access-date=17 July 2018|archive-date=17 July 2018|archive-url=https://web.archive.org/web/20180717070700/http://www.roug.org/soren/6809/os9sysprog.html#f.crc|url-status=live}}</ref> | 0x800063 | 0xC60001 | 0x8C0003 | 0xC00031 | rowspan="2" {{Good|even}} | rowspan="2" {{Good|yes}}<ref name="koop_crc24">{{cite web|url=https://users.ece.cmu.edu/~koopman/crc/crc8.html|title=24 Bit CRC Zoo|first=Philip P. |last=Koopman|date=20 May 2018|website=users.ece.cmu.edu|access-date=19 January 2018|archive-date=7 April 2018|archive-url=https://web.archive.org/web/20180407224301/http://users.ece.cmu.edu/~koopman/crc/crc8.html|url-status=live}}</ref> | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | β | rowspan="2" | 4 | rowspan="2" | 4 | rowspan="2" | 8388583 | rowspan="2" | 8388583 | rowspan="2" | β |- | colspan="4" | <math>x^{24} + x^{23} + x^6 + x^5 + x + 1 </math> |- | rowspan="2" | CRC-30 | rowspan="2" | [[CDMA]] | 0x2030B9C7 | 0x38E74301 | 0x31CE8603 | 0x30185CE3 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{30} + x^{29} + x^{21} + x^{20} + x^{15} + x^{13} + x^{12} + x^{11} + x^{8} + x^{7} + x^{6} + x^{2} + x + 1 </math> |- | rowspan="2" | CRC-32 | rowspan="2" | [[ISO]] 3309 ([[High-Level Data Link Control|HDLC]]), [[ANSI]] X3.66 ([[ADCCP]]), [[Federal Information Processing Standard|FIPS]] PUB 71, FED-STD-1003, [[ITU-T V.42]], ISO/IEC/IEEE 802-3 ([[Ethernet]]), ISO/IEC/IEEE 802-11 ([[Wi-Fi]]), [[SATA]], [[NVMe]],<ref>NVM Express (TM) Command Set Specification</ref> [[MPEG-2]], [[PKZIP]], [[Gzip]], [[Bzip2]], [[PCI Express]], [[HDMI]], [[POSIX]] [[cksum]],<ref>{{cite web|url=http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cksum.html|title=cksum|website=pubs.opengroup.org|access-date=27 June 2017|archive-date=18 July 2018|archive-url=https://web.archive.org/web/20180718084130/http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cksum.html|url-status=live}}</ref> [[Portable Network Graphics|PNG]],<ref>{{Cite web | last1 = Boutell | first1 = Thomas | last2 = Randers-Pehrson | first2 = Glenn | date = 14 July 1998 | title = PNG (Portable Network Graphics) Specification, Version 1.2 | url = http://www.libpng.org/pub/png/spec/1.2/PNG-Structure.html | publisher = Libpng.org | access-date = 3 February 2011 | display-authors = etal | archive-date = 3 September 2011 | archive-url = https://web.archive.org/web/20110903114128/http://www.libpng.org/pub/png/spec/1.2/PNG-Structure.html | url-status = live }}</ref> [[ZMODEM]], many others | 0x04C11DB7 | 0xEDB88320 | 0xDB710641 | 0x82608EDB<ref name="koop02" /> | rowspan="2" {{Bad|odd}} | rowspan="2" {{Good|yes}} | rowspan="2" | β | rowspan="2" | 10 | rowspan="2" | β | rowspan="2" | β | rowspan="2" | 12 | rowspan="2" | 21 | rowspan="2" | 34 | rowspan="2" | 57 | rowspan="2" | 91 | rowspan="2" | 171 | rowspan="2" | 268 | rowspan="2" | 2974 | rowspan="2" | 91607 | rowspan="2" | 4294967263 | rowspan="2" | β |- | colspan="4" | <math>x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11} + x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1</math> |- | rowspan="2" | {{visible anchor|CRC-32C}} (Castagnoli) | rowspan="2" | [[iSCSI]], [[SCTP]], [[G.hn]] payload, [[SSE4#SSE4.2|SSE4.2]], [[Btrfs]], [[ext4]], [[ReFS]],<ref> https://learn.microsoft.com/en-us/windows-server/storage/refs/integrity-streams</ref>, [[VHDX]],<ref> https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-vhdx/340e64a4-ae2a-4dc1-b19b-3dd9d57a3359</ref> [[Ceph (software)|Ceph]] | 0x1EDC6F41 | 0x82F63B78 | 0x05EC76F1 | 0x8F6E37A0<ref name="koop02" /> | rowspan="2" {{Good|even}} | rowspan="2" {{Good|yes}} | rowspan="2" | 6 | rowspan="2" | β | rowspan="2" | 8 | rowspan="2" | β | rowspan="2" | 20 | rowspan="2" | β | rowspan="2" | 47 | rowspan="2" | β | rowspan="2" | 177 | rowspan="2" | β | rowspan="2" | 5243 | rowspan="2" | β | rowspan="2" | 2147483615 | rowspan="2" | β | rowspan="2" | β |- | colspan="4" | <math>x^{32} + x^{28} + x^{27} + x^{26} + x^{25} + x^{23} + x^{22} + x^{20} + x^{19} + x^{18} + x^{14} + x^{13} + x^{11} + x^{10} + x^9 + x^8 + x^6 + 1</math> |- | rowspan="2" | {{visible anchor|CRC-32K}} (Koopman {1,3,28}) | rowspan="2" | Excellent at Ethernet frame length, poor performance with long files {{citation needed|date=January 2024}} | 0x741B8CD7 | 0xEB31D82E | 0xD663B05D | 0xBA0DC66B<ref name="koop02" /> | rowspan="2" {{Good|even}} | rowspan="2" {{Bad|no}} | rowspan="2" | 2 | rowspan="2" | β | rowspan="2" | 4 | rowspan="2" | β | rowspan="2" | 16 | rowspan="2" | β | rowspan="2" | 18 | rowspan="2" | β | rowspan="2" | 152 | rowspan="2" | β | rowspan="2" | 16360 | rowspan="2" | β | rowspan="2" | 114663 | rowspan="2" | β | rowspan="2" | β |- | colspan="4" | <math>x^{32} + x^{30} + x^{29} + x^{28} + x^{26} + x^{20} + x^{19} + x^{17} + x^{16} + x^{15} + x^{11} + x^{10} + x^{7} + x^{6} + x^{4} + x^{2} + x + 1</math> |- |CRC-32K<sub>2</sub> (Koopman {1,1,30}) | Excellent at Ethernet frame length, poor performance with long files {{citation needed|date=January 2024}} | 0x32583499 | 0x992C1A4C | 0x32583499 | 0x992C1A4C<ref name="koop02" /> | {{Good|even}} | {{Bad|no}} | β | β | 3 | β | 16 | β | 26 | β | 134 | β | 32738 | β | 65506 | β | β |- | rowspan="2" | CRC-32Q | rowspan="2" | aviation; [[AIXM]]<ref name="aixm-primer">{{Cite book|title=AIXM Primer|url=http://www.eurocontrol.int/sites/default/files/service/content/documents/information-management/20060320-aixm-primer.pdf|version=4.5|publisher=[[European Organisation for the Safety of Air Navigation]]|date=20 March 2006|access-date=3 February 2019|archive-date=20 November 2018|archive-url=https://web.archive.org/web/20181120041622/https://www.eurocontrol.int/sites/default/files/service/content/documents/information-management/20060320-aixm-primer.pdf|url-status=live}}</ref> | 0x814141AB | 0xD5828281 | 0xAB050503 | 0xC0A0A0D5 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{32} + x^{31} + x^{24} + x^{22} + x^{16} + x^{14} + x^{8} + x^{7} + x^{5} + x^{3} + x + 1</math> |- | Adler-32 | | colspan="4" | Often confused to be a CRC, but actually a checksum; see [[Adler-32]] |- | rowspan="2" | CRC-40-[[GSM]] | rowspan="2" | GSM control channel<ref>[http://www.etsi.org/deliver/etsi_ts/100900_100999/100909/08.09.00_60/ts_100909v080900p.pdf ETSI TS 100 909] {{Webarchive|url=https://web.archive.org/web/20180417050648/http://www.etsi.org/deliver/etsi_ts/100900_100999/100909/08.09.00_60/ts_100909v080900p.pdf |date=17 April 2018 }} version 8.9.0 (January 2005), Section 4.1.2 a</ref><ref name="gammel">{{Cite book|last=Gammel|first=Berndt M.|date=31 October 2005|title=Matpack documentation: Crypto β Codes <!-- |unusedurl=http://users.physik.tu-muenchen.de/gammel/matpack/html/LibDoc/Crypto/MpCRC.html long-time home, gone-->|url=http://www.matpack.de/index.html#DOWNLOAD|publisher=Matpack.de|access-date=21 April 2013|archive-date=25 August 2013|archive-url=https://web.archive.org/web/20130825205922/http://matpack.de/index.html#DOWNLOAD|url-status=live}} (Note: MpCRC.html is included with the Matpack compressed software source code, under /html/LibDoc/Crypto)</ref><ref name="geremia">{{Cite web|last=Geremia|first=Patrick|date=April 1999|title=Cyclic redundancy check computation: an implementation using the TMS320C54x|issue=SPRA530|publisher=Texas Instruments|page=5|url=http://www.ti.com/lit/an/spra530/spra530.pdf|access-date=4 July 2012 |archive-date=14 June 2012|archive-url=https://web.archive.org/web/20120614061303/http://www.ti.com/lit/an/spra530/spra530.pdf|url-status=live}}</ref> | 0x0004820009 | 0x9000412000 | 0x2000824001 | 0x8002410004 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{40} + x^{26} + x^{23} + x^{17} + x^3 + 1 = (x^{23} + 1) (x^{17} + x^3 + 1)</math> |- | rowspan="2" | CRC-64-[[Ecma International|ECMA]] | rowspan="2" | [https://ecma-international.org/publications-and-standards/standards/ecma-182/ ECMA-182] p. 51, [[XZ Utils]] | 0x42F0E1EBA9EA3693 | 0xC96C5795D7870F42 | 0x92D8AF2BAF0E1E85 | 0xA17870F5D4F51B49 | rowspan="2" {{Good|even}} |- | colspan="4" | <math>x^{64} + x^{62} + x^{57} + x^{55} + x^{54} + x^{53} + x^{52} + x^{47} + x^{46} + x^{45} + x^{40} + x^{39} + x^{38} + x^{37} + x^{35} + x^{33} +</math> <math>x^{32} + x^{31} + x^{29} + x^{27} + x^{24} + x^{23} + x^{22} + x^{21} + x^{19} + x^{17} + x^{13} + x^{12} + x^{10} + x^9 + x^7 + x^4 + x + 1</math> |- | rowspan="2" | CRC-64-ISO | rowspan="2" | ISO 3309 ([[High-Level Data Link Control|HDLC]]), [[Swiss-Prot]]/[[TrEMBL]]; considered weak for hashing<ref name="jones-improved64">{{Cite web|last=Jones|first=David T.|title=An Improved 64-bit Cyclic Redundancy Check for Protein Sequences|publisher=University College London|url=http://www.cs.ucl.ac.uk/staff/d.jones/crcnote.pdf|access-date=15 December 2009|archive-date=7 June 2011|archive-url=https://web.archive.org/web/20110607110311/http://www.cs.ucl.ac.uk/staff/d.jones/crcnote.pdf|url-status=live}}<!-- date of PDF=1 Dec 2009; date of referenced C file=2 Mar 2006; date in C file comments=28 Sep 2002 --></ref> | 0x000000000000001B | 0xD800000000000000 | 0xB000000000000001 | 0x800000000000000D | rowspan="2" {{Bad|odd}} |- | colspan="4" | <math>x^{64} + x^4 + x^3 + x + 1</math> |} </div> === Implementations === *[https://web.archive.org/web/20130715065157/http://gnuradio.org/redmine/projects/gnuradio/repository/revisions/1cb52da49230c64c3719b4ab944ba1cf5a9abb92/entry/gr-digital/lib/digital_crc32.cc Implementation of CRC32 in GNU Radio up to 3.6.1 (ca. 2012)] *[http://sourceforge.net/projects/crccalculator/files/CRC/ C class code for CRC checksum calculation with many different CRCs to choose from] ===CRC catalogues=== * [https://reveng.sourceforge.io/crc-catalogue/all.htm Catalogue of parametrised CRC algorithms] * [http://users.ece.cmu.edu/~koopman/crc/crc32.html CRC Polynomial Zoo]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)