0% found this document useful (0 votes)
190 views9 pages

Cyclic Redundancy Check

The document discusses cyclic redundancy checks (CRCs), which are error-detecting codes used to detect accidental changes to digital data. CRCs work by calculating a check value based on the remainder of a polynomial division of the data, which is attached to the data and later used to detect errors. The CRC was invented in 1961 and is commonly implemented using 32-bit polynomials to detect common transmission errors.

Uploaded by

Rakesh Inani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
190 views9 pages

Cyclic Redundancy Check

The document discusses cyclic redundancy checks (CRCs), which are error-detecting codes used to detect accidental changes to digital data. CRCs work by calculating a check value based on the remainder of a polynomial division of the data, which is attached to the data and later used to detect errors. The CRC was invented in 1961 and is commonly implemented using 32-bit polynomials to detect common transmission errors.

Uploaded by

Rakesh Inani
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

11/22/2014

CyclicredundancycheckWikipedia,thefreeencyclopedia

Cyclicredundancycheck
FromWikipedia,thefreeencyclopedia

(RedirectedfromCRC32)
Acyclicredundancycheck(CRC)isanerrordetectingcodecommonlyusedindigitalnetworksandstoragedevicestodetectaccidental
changestorawdata.Blocksofdataenteringthesesystemsgetashortcheckvalueattached,basedontheremainderofapolynomialdivisionof
theircontentsonretrievalthecalculationisrepeated,andcorrectiveactioncanbetakenagainstpresumeddatacorruptionifthecheckvalues
donotmatch.
CRCsaresocalledbecausethecheck(dataverification)valueisaredundancy(itexpandsthemessagewithoutaddinginformation)andthe
algorithmisbasedoncycliccodes.CRCsarepopularbecausetheyaresimpletoimplementinbinaryhardware,easytoanalyze
mathematically,andparticularlygoodatdetectingcommonerrorscausedbynoiseintransmissionchannels.Becausethecheckvaluehasa
fixedlength,thefunctionthatgeneratesitisoccasionallyusedasahashfunction.
TheCRCwasinventedbyW.WesleyPetersonin1961the32bitCRCfunctionofEthernetandmanyotherstandardsistheworkofseveral
researchersandwaspublishedin1975.

Contents
1Introduction
2Application
3Dataintegrity
4Computation
5Mathematics
5.1Designingpolynomials
6Specification
7Standardsandcommonuse
8Implementations
9Seealso
10References
11Externallinks

Introduction
CRCsarebasedonthetheoryofcyclicerrorcorrectingcodes.Theuseofsystematiccycliccodes,whichencodemessagesbyaddingafixed
lengthcheckvalue,forthepurposeoferrordetectionincommunicationnetworks,wasfirstproposedbyW.WesleyPetersonin1961.[1]Cyclic
codesarenotonlysimpletoimplementbuthavethebenefitofbeingparticularlywellsuitedforthedetectionofbursterrors,contiguous
sequencesoferroneousdatasymbolsinmessages.Thisisimportantbecausebursterrorsarecommontransmissionerrorsinmany
communicationchannels,includingmagneticandopticalstoragedevices.TypicallyannbitCRCappliedtoadatablockofarbitrarylength
willdetectanysingleerrorburstnotlongerthannbitsandwilldetectafraction12nofalllongererrorbursts.
SpecificationofaCRCcoderequiresdefinitionofasocalledgeneratorpolynomial.Thispolynomialbecomesthedivisorinapolynomiallong
division,whichtakesthemessageasthedividendandinwhichthequotientisdiscardedandtheremainderbecomestheresult.Theimportant
caveatisthatthepolynomialcoefficientsarecalculatedaccordingtothearithmeticofafinitefield,sotheadditionoperationcanalwaysbe
performedbitwiseparallel(thereisnocarrybetweendigits).Thelengthoftheremainderisalwayslessthanthelengthofthegenerator
polynomial,whichthereforedetermineshowlongtheresultcanbe.
Inpractice,allcommonlyusedCRCsemploytheGaloisfieldoftwoelements,GF(2).Thetwoelementsareusuallycalled0and1,
comfortablymatchingcomputerarchitecture.
ACRCiscalledannbitCRCwhenitscheckvalueisnbits.Foragivenn,multipleCRCsarepossible,eachwithadifferentpolynomial.Such
apolynomialhashighestdegreen,whichmeansithasn+1terms.Inotherwords,thepolynomialhasalengthofn+1itsencodingrequires
n+1bits.NotethatmostpolynomialspecificationseitherdroptheMSBorLSBbit,sincetheyarealways1.TheCRCandassociated
polynomialtypicallyhaveanameoftheformCRCnXXXasinthetablebelow.
Thesimplesterrordetectionsystem,theparitybit,isinfactatrivial1bitCRC:itusesthegeneratorpolynomialx+1(twoterms),andhasthe
nameCRC1.
http://en.wikipedia.org/wiki/Cyclic_redundancy_check

1/9

11/22/2014

CyclicredundancycheckWikipedia,thefreeencyclopedia

Application
ACRCenableddevicecalculatesashort,fixedlengthbinarysequence,knownasthecheckvalueorCRC,foreachblockofdatatobesentor
storedandappendsittothedata,formingacodeword.Whenacodewordisreceivedorread,thedeviceeithercomparesitscheckvaluewith
onefreshlycalculatedfromthedatablock,orequivalently,performsaCRConthewholecodewordandcomparestheresultingcheckvalue
withanexpectedresidueconstant.Ifthecheckvaluesdonotmatch,thentheblockcontainsadataerror.Thedevicemaytakecorrectiveaction,
suchasrereadingtheblockorrequestingthatitbesentagain.Otherwise,thedataisassumedtobeerrorfree(though,withsomesmall
probability,itmaycontainundetectederrorsthisisthefundamentalnatureoferrorchecking).[2]

Dataintegrity
CRCsarespecificallydesignedtoprotectagainstcommontypesoferrorsoncommunicationchannels,wheretheycanprovidequickand
reasonableassuranceoftheintegrityofmessagesdelivered.However,theyarenotsuitableforprotectingagainstintentionalalterationofdata.
Firstly,asthereisnoauthentication,anattackercaneditamessageandrecomputetheCRCwithoutthesubstitutionbeingdetected.When
storedalongsidethedata,CRCsandcryptographichashfunctionsbythemselvesdonotprotectagainstintentionalmodificationofdata.Any
applicationthatrequiresprotectionagainstsuchattacksmustusecryptographicauthenticationmechanisms,suchasmessageauthentication
codesordigitalsignatures(whicharecommonlybasedoncryptographichashfunctions).
Secondly,unlikecryptographichashfunctions,CRCisaneasilyreversiblefunction,whichmakesitunsuitableforuseindigitalsignatures.[3]
Thirdly,CRCisalinearfunctionwithapropertythat
asaresult,eveniftheCRCis
encryptedwithastreamcipherthatusesXORasitscombiningoperation(ormodeofblockcipherwhicheffectivelyturnsitintoastream
cipher,suchasOFBorCFB),boththemessageandtheassociatedCRCcanbemanipulatedwithoutknowledgeoftheencryptionkeythiswas
oneofthewellknowndesignflawsoftheWiredEquivalentPrivacy(WEP)protocol.[4]

Computation
TocomputeannbitbinaryCRC,linethebitsrepresentingtheinputinarow,andpositionthe(n+1)bitpatternrepresentingtheCRC'sdivisor
(calleda"polynomial")underneaththelefthandendoftherow.
Inthisexample,weshallencode14bitsofmessagewitha3bitCRC,withapolynomialx+x+1.Thepolynomialiswritteninbinaryasthe
coefficientsa3rdorderpolynomialhas4coefficients(1x+0x+1x+1).Inthiscase,thecoefficientsare1,0,1and1.Theresultofthe
calculationis3bitslong.
Startwiththemessagetobeencoded:
11010011101100

ThisisfirstpaddedwithzeroescorrespondingtothebitlengthnoftheCRC.Hereisthefirstcalculationforcomputinga3bitCRC:
11010011101100000<inputrightpaddedby3bits
1011<divisor(4bits)=x+x+1

01100011101100000<result

Thealgorithmactsonthebitsdirectlyabovethedivisorineachstep.TheresultforthatiterationisthebitwiseXORofthepolynomialdivisor
withthebitsaboveit.Thebitsnotabovethedivisoraresimplycopieddirectlybelowforthatstep.Thedivisoristhenshiftedonebittothe
right,andtheprocessisrepeateduntilthedivisorreachestherighthandendoftheinputrow.Hereistheentirecalculation:
11010011101100000<inputrightpaddedby3bits
1011<divisor
01100011101100000<result(notethefirstfourbitsaretheXORwiththedivisorbeneath,therestofthebitsareunchanged)
1011<divisor...
00111011101100000
1011
00010111101100000
1011
00000001101100000<notethatthedivisormovesovertoalignwiththenext1inthedividend(sincequotientforthatstepwaszero)
1011(inotherwords,itdoesn'tnecessarilymoveonebitperiteration)
00000000110100000
1011
00000000011000000
1011
00000000001110000
1011
00000000000101000

http://en.wikipedia.org/wiki/Cyclic_redundancy_check

2/9

11/22/2014

CyclicredundancycheckWikipedia,thefreeencyclopedia

1011

00000000000000100<remainder(3bits).Divisionalgorithmstopshereasquotientisequaltozero.

Sincetheleftmostdivisorbitzeroedeveryinputbitittouched,whenthisprocessendstheonlybitsintheinputrowthatcanbenonzeroarethe
nbitsattherighthandendoftherow.Thesenbitsaretheremainderofthedivisionstep,andwillalsobethevalueoftheCRCfunction
(unlessthechosenCRCspecificationcallsforsomepostprocessing).
Thevalidityofareceivedmessagecaneasilybeverifiedbyperformingtheabovecalculationagain,thistimewiththecheckvalueadded
insteadofzeroes.Theremaindershouldequalzeroiftherearenodetectableerrors.
11010011101100100<inputwithcheckvalue
1011<divisor
01100011101100100<result
1011<divisor...
00111011101100100
......

00000000001110100
1011
00000000000101100
1011

0<remainder

Mathematics
Mathematicalanalysisofthisdivisionlikeprocessrevealshowtoselectadivisorthatguaranteesgooderrordetectionproperties.Inthis
analysis,thedigitsofthebitstringsaretakenasthecoefficientsofapolynomialinsomevariablexcoefficientsthatareelementsofthefinite
fieldGF(2),insteadofmorefamiliarnumbers.Thesetofbinarypolynomialsisamathematicalring.

Designingpolynomials
TheselectionofgeneratorpolynomialisthemostimportantpartofimplementingtheCRCalgorithm.Thepolynomialmustbechosento
maximizetheerrordetectingcapabilitieswhileminimizingoverallcollisionprobabilities.
Themostimportantattributeofthepolynomialisitslength(largestdegree(exponent)+1ofanyoneterminthepolynomial),becauseofits
directinfluenceonthelengthofthecomputedcheckvalue.
Themostcommonlyusedpolynomiallengthsare:
9bits(CRC8)
17bits(CRC16)
33bits(CRC32)
65bits(CRC64)
ACRCiscalledannbitCRCwhenitscheckvalueisnbits.Foragivenn,multipleCRC'sarepossible,eachwithadifferentpolynomial.Such
apolynomialhashighestdegreen,andhencen+1terms(thepolynomialhasalengthofn+1).Theremainderhaslengthn.TheCRChasa
nameoftheformCRCnXXX.
ThedesignoftheCRCpolynomialdependsonthemaximumtotallengthoftheblocktobeprotected(data+CRCbits),thedesirederror
protectionfeatures,andthetypeofresourcesforimplementingtheCRC,aswellasthedesiredperformance.Acommonmisconceptionisthat
the"best"CRCpolynomialsarederivedfromeitherirreduciblepolynomialsorirreduciblepolynomialstimesthefactor1+x,whichaddstothe
codetheabilitytodetectallerrorsaffectinganoddnumberofbits.[5]Inreality,allthefactorsdescribedaboveshouldenterintotheselectionof
thepolynomialandmayleadtoareduciblepolynomial.However,choosingareduciblepolynomialwillresultinacertainproportionofmissed
errors,duetothequotientringhavingzerodivisors.
TheadvantageofchoosingaprimitivepolynomialasthegeneratorforaCRCcodeisthattheresultingcodehasmaximaltotalblocklengthin
thesensethatall1biterrorswithinthatblocklengthhavedifferentremainders(alsocalledsyndromes)andtherefore,sincetheremainderisa
linearfunctionoftheblock,thecodecandetectall2biterrorswithinthatblocklength.Ifristhedegreeoftheprimitivegeneratorpolynomial,
thenthemaximaltotalblocklengthis
,andtheassociatedcodeisabletodetectanysinglebitordoublebiterrors.[6]Wecanimprove
thissituation.Ifweusethegeneratorpolynomial
,where
isaprimitivepolynomialofdegree
,thenthe
maximaltotalblocklengthis
,andthecodeisabletodetectsingle,double,tripleandanyoddnumberoferrors.

http://en.wikipedia.org/wiki/Cyclic_redundancy_check

3/9

11/22/2014

CyclicredundancycheckWikipedia,thefreeencyclopedia

Apolynomial
thatadmitsotherfactorizationsmaybechosenthensoastobalancethemaximaltotalblocklengthwithadesirederror
detectionpower.TheBCHcodesareapowerfulclassofsuchpolynomials.Theysubsumethetwoexamplesabove.Regardlessofthe
reducibilitypropertiesofageneratorpolynomialofdegreer,ifitincludesthe"+1"term,thecodewillbeabletodetecterrorpatternsthatare
confinedtoawindowofrcontiguousbits.Thesepatternsarecalled"errorbursts".

Specification
TheconceptoftheCRCasanerrordetectingcodegetscomplicatedwhenanimplementerorstandardscommitteeusesittodesignapractical
system.Herearesomeofthecomplications:
Sometimesanimplementationprefixesafixedbitpatterntothebitstreamtobechecked.Thisisusefulwhenclockingerrorsmight
insert0bitsinfrontofamessage,analterationthatwouldotherwiseleavethecheckvalueunchanged.
Usually,butnotalways,animplementationappendsn0bits(nbeingthesizeoftheCRC)tothebitstreamtobecheckedbeforethe
polynomialdivisionoccurs.SuchappendingisexplicitlydemonstratedintheComputationofCRCarticle.Thishastheconveniencethat
theremainderoftheoriginalbitstreamwiththecheckvalueappendedisexactlyzero,sotheCRCcanbecheckedsimplybyperforming
thepolynomialdivisiononthereceivedbitstreamandcomparingtheremainderwithzero.Duetotheassociativeandcommutative
propertiesoftheexclusiveoroperation,practicaltabledrivenimplementationscanobtainaresultnumericallyequivalenttozero
appendingwithoutexplicitlyappendinganyzeroes,byusinganequivalent,[5]fasteralgorithmthatcombinesthemessagebitstreamwith
thestreambeingshiftedoutoftheCRCregister.
SometimesanimplementationexclusiveORsafixedbitpatternintotheremainderofthepolynomialdivision.
Bitorder:Someschemesviewtheloworderbitofeachbyteas"first",whichthenduringpolynomialdivisionmeans"leftmost",which
iscontrarytoourcustomaryunderstandingof"loworder".ThisconventionmakessensewhenserialporttransmissionsareCRC
checkedinhardware,becausesomewidespreadserialporttransmissionconventionstransmitbytesleastsignificantbitfirst.
Byteorder:WithmultibyteCRCs,therecanbeconfusionoverwhetherthebytetransmittedfirst(orstoredinthelowestaddressedbyte
ofmemory)istheleastsignificantbyte(LSB)orthemostsignificantbyte(MSB).Forexample,some16bitCRCschemesswapthe
bytesofthecheckvalue.
Omissionofthehighorderbitofthedivisorpolynomial:Sincethehighorderbitisalways1,andsinceannbitCRCmustbedefined
byan(n+1)bitdivisorwhichoverflowsannbitregister,somewritersassumethatitisunnecessarytomentionthedivisor'shighorder
bit.
Omissionoftheloworderbitofthedivisorpolynomial:Sincetheloworderbitisalways1,authorssuchasPhilipKoopmanrepresent
polynomialswiththeirhighorderbitintact,butwithouttheloworderbit(the

or1term).Thisconventionencodesthepolynomial

completewithitsdegreeinoneinteger.
Thesecomplicationsmeanthattherearethreecommonwaystoexpressapolynomialasaninteger:thefirsttwo,whicharemirrorimagesin
binary,aretheconstantsfoundincodethethirdisthenumberfoundinKoopman'spapers.Ineachcase,onetermisomitted.Sothe
polynomial
maybetranscribedas:
0x3=0b0011,representing

(MSBfirstcode)

0xC=0b1100,representing

(LSBfirstcode)

0x9=0b1001,representing

(Koopmannotation)

Inthetablebelowtheyareshownas:
ExamplesofCRCRepresentations
Name Normal Reversed Reversedreciprocal
CRC4 0x3

0xC

0x9

Standardsandcommonuse
Numerousvarietiesofcyclicredundancycheckshavebeenincorporatedintotechnicalstandards.Bynomeansdoesonealgorithm,oroneof
eachdegree,suiteverypurposeKoopmanandChakravartyrecommendselectingapolynomialaccordingtotheapplicationrequirementsand
theexpecteddistributionofmessagelengths.[7]ThenumberofdistinctCRCsinusehasconfuseddevelopers,asituationwhichauthorshave
soughttoaddress.[5]TherearethreepolynomialsreportedforCRC12,[7]sixteenconflictingdefinitionsofCRC16,andsixofCRC32.[8]
http://en.wikipedia.org/wiki/Cyclic_redundancy_check

4/9

11/22/2014

CyclicredundancycheckWikipedia,thefreeencyclopedia

Thepolynomialscommonlyappliedarenotthemostefficientonespossible.Between1993and2004,Koopman,Castagnoliandothers
surveyedthespaceofpolynomialsupto16bits,[7]andof24and32bits,[9][10]findingexamplesthathavemuchbetterperformance(intermsof
Hammingdistanceforagivenmessagesize)thanthepolynomialsofearlierprotocols,andpublishingthebestofthesewiththeaimof
improvingtheerrordetectioncapacityoffuturestandards.[10]Inparticular,iSCSIandSCTPhaveadoptedoneofthefindingsofthisresearch,
theCRC32C(Castagnoli)polynomial.
Thedesignofthe32bitpolynomialmostcommonlyusedbystandardsbodies,CRC32IEEE,wastheresultofajointeffortfortheRome
LaboratoryandtheAirForceElectronicSystemsDivisionbyJosephHammond,JamesBrownandShyanShiangLiuoftheGeorgiaInstitute
ofTechnologyandKennethBrayeroftheMITRECorporation.Theearliestknownappearancesofthe32bitpolynomialwereintheir1975
publications:TechnicalReport2956byBrayerforMITRE,publishedinJanuaryandreleasedforpublicdisseminationthroughDTICin
August,[11]andHammond,BrownandLiu'sreportfortheRomeLaboratory,publishedinMay.[12]Bothreportscontainedcontributionsfrom
theotherteam.DuringDecember1975,BrayerandHammondpresentedtheirworkinapaperattheIEEENationalTelecommunications
Conference:theIEEECRC32polynomialisthegeneratingpolynomialofaHammingcodeandwasselectedforitserrordetection
performance.[13]Evenso,theCastagnoliCRC32CpolynomialusediniSCSIorSCTPmatchesitsperformanceonmessagesfrom58bitsto
131kbits,andoutperformsitinseveralsizerangesincludingthetwomostcommonsizesofInternetpacket.[10]TheITUTG.hnstandardalso
usesCRC32Ctodetecterrorsinthepayload(althoughitusesCRC16CCITTforPHYheaders).
Thetablebelowlistsonlythepolynomialsofthevariousalgorithmsinuse.Variationsofaparticularprotocolcanimposepreinversion,post
inversionandreversedbitorderingasdescribedabove.Forexample,theCRC32usedinbothGzipandBzip2usethesamepolynomial,but
Bzip2employsreversedbitordering,whileGzipdoesnot.
CRCsinproprietaryprotocolsmightuseanontrivialinitialvalueandfinalXORforobfuscationbutthisdoesnotaddcryptographicstrength
tothealgorithm.AnunknownerrordetectingcodecanbecharacterizedasaCRC,andassuchfullyreverseengineered,fromitsoutput
codewords.[14]
SeePolynomialrepresentationsofcyclicredundancychecksforthealgebraicrepresentationsofthepolynomialsfortheCRCsbelow.
Name

Polynomialrepresentations

Uses

Normal

Reversed

Reversedreciprocal

CRC1

mosthardwarealsoknownasparitybit

0x1

0x1

0x1

CRC4ITU

G.704(http://www.itu.int/rec/TRECG.704
199810I/en)

0x3

0xC

0x9

CRC5EPC

Gen2RFID[15]

0x09

0x12

0x14

CRC5ITU

G.704(http://www.itu.int/rec/TRECG.704
199810I/en)

0x15

0x15

0x1A

CRC5USB

USBtokenpackets

0x05

0x14

0x12

CRC6
mobilenetworks[16]
CDMA2000A

0x27

0x39

0x33

CRC6
mobilenetworks[16]
CDMA2000B

0x07

0x38

0x23

CRC6ITU

G.704(http://www.itu.int/rec/TRECG.704
199810I/en)

0x03

0x30

0x21

CRC7

telecomsystems,G.707
(http://www.itu.int/rec/TRECG.707/en),G.832
0x09
(http://www.itu.int/rec/TRECG.832/en),
MMC,SD

0x48

0x44

CRC7MVB

TrainCommunicationNetwork,IEC60870
5[17]

0x65

0x53

0x72

CRC8

0xD5

0xAB

0xEA[7]

I.432.1(http://www.itu.int/rec/TRECI.432.1
CRC8CCITT 199902I/en)ATMHEC,ISDNHECandcell
delineation

0x07

0xE0

0x83

CRC8
Dallas/Maxim

1Wirebus

0x31

0x8C

0x98

CRC8SAE
J1850

AES3

0x1D

0xB8

0x8E

CRC8
WCDMA

mobilenetworks[16][18]

0x9B

0xD9

0xCD[7]

http://en.wikipedia.org/wiki/Cyclic_redundancy_check

5/9

11/22/2014

CyclicredundancycheckWikipedia,thefreeencyclopedia

CRC10

ATMI.610(http://www.itu.int/rec/TREC
I.610/en)

0x233

0x331

0x319

CRC10
CDMA2000

mobilenetworks[16]

0x3D9

0x26F

0x3EC

CRC11

FlexRay[19]

0x385

0x50E

0x5C2

CRC12

telecomsystems[20][21]

0x80F

0xF01

0xC07[7]

CRC12
CDMA2000

mobilenetworks[16]

0xF13

0xC8F

0xF89

CRC13BBC

Timesignal,Radioteleswitch[22]

0x1CF5

0x15E7

0x1E7A

0x4599

0x4CD1

0x62CC

CRC15CAN
CRC15
MPT1327

[23]

0x6815

0x540B

0x740A

Chakravarty

optimalforpayloads64bits[17]

0x2F15

0xA8F4

0x978A

CRC16
ARINC

ACARSapplications[24]

0xA02B

0xD405

0xD015

X.25,V.41,HDLCFCS,XMODEM,Bluetooth,
CRC16CCITT PACTOR,SD,manyothersknownasCRC
0x1021
CCITT

0x8408

0x8810[7]

CRC16
CDMA2000

0xC867

0xE613

0xE433

CRC16DECT cordlesstelephones[25]

0x0589

0x91A0

0x82C4

CRC16T10
DIF

SCSIDIF

0x8BB7[26]

0xEDD1

0xC5DB

CRC16DNP

DNP,IEC870,MBus

0x3D65

0xA6BC

0x9EB2

CRC16IBM

Bisync,Modbus,USB,ANSIX3.28
(http://www.incits.org/press/1997/pr97020.htm),
0x8005
SIADC07,manyothersalsoknownasCRC
16andCRC16ANSI

0xA001

0xC002

Fletcher

UsedinAdler32A&BChecksums

CRC17CAN

CANFD[27]

0x1685B

0x1B42D

0x1B42D

CRC21CAN

CANFD[27]

0x102899

0x132281

0x18144C

CRC24

FlexRay[19]

0x5D6DCB

0xD3B6BA

0xAEB6E5

CRC24Radix
OpenPGP,RTCM104v3
64

0x864CFB

0xDF3261

0xC3267D

CRC30

CDMA

0x2030B9C7

0x38E74301

0x30185CE3

Adler32

Zlib

CRC32

HDLC,ANSIX3.66,ITUTV.42,Ethernet,
SerialATA,MPEG2,PKZIP,Gzip,Bzip2,
PNG,[28]manyothers

0x04C11DB7

0xEDB88320

0x82608EDB[10]

CRC32C
(Castagnoli)

iSCSI,SCTP,G.hnpayload,SSE4.2,Btrfs,ext4 0x1EDC6F41

0x82F63B78

0x8F6E37A0[10]

0x741B8CD7

0xEB31D82E

0xBA0DC66B[10]

mobilenetworks[16]

CRC32K
(Koopman)

NotaCRCseeFletcher'schecksum

NotaCRCseeAdler32

CRC32Q

aviationAIXM[29]

0x814141AB

0xD5828281

0xC0A0A0D5

CRC40GSM

GSMcontrolchannel[30][31]

0x0004820009

0x9000412000

0x8002410004

ECMA182(http://www.ecma
CRC64ECMA international.org/publications/standards/Ecma
182.htm),XZUtils
CRC64ISO

HDLC,SwissProt/TrEMBLconsideredweak
forhashing[32]

0x42F0E1EBA9EA3693 0xC96C5795D7870F42 0xA17870F5D4F51B49


0x000000000000001B

0xD800000000000000 0x800000000000000D

Implementations
http://en.wikipedia.org/wiki/Cyclic_redundancy_check

6/9

11/22/2014

CyclicredundancycheckWikipedia,thefreeencyclopedia

ImplementationofCRC32inGnuradio
(http://gnuradio.org/redmine/projects/gnuradio/repository/revisions/1cb52da49230c64c3719b4ab944ba1cf5a9abb92/entry/gr
digital/lib/digital_crc32.cc)
CclasscodeforCRCchecksumcalculationwithmanydifferentCRCstochoosefrom
(http://sourceforge.net/projects/crccalculator/files/CRC/)

Seealso
Mathematicsofcyclicredundancychecks
Computationofcyclicredundancychecks
Polynomialrepresentationsofcyclicredundancychecks
Errordetectionandcorrection
Listofhashfunctions
Informationsecurity
Simplefileverification
cksum
HeaderErrorCorrection

References
1. ^Peterson,W.W.andBrown,D.T.(January1961)."CyclicCodesforErrorDetection".ProceedingsoftheIRE49(1):228235.
doi:10.1109/JRPROC.1961.287814(http://dx.doi.org/10.1109%2FJRPROC.1961.287814).
2. ^Ritter,Terry(February1986)."TheGreatCRCMystery"(http://www.ciphersbyritter.com/ARTS/CRCMYST.HTM).Dr.Dobb'sJournal11(2):26
34,7683.Retrieved21May2009.
3. ^Stigge,MartinPltz,HenrykMller,WolfRedlich,JensPeter(May2006)."ReversingCRCTheoryandPractice"(http://sar.informatik.hu
berlin.de/research/publications/SARPR200605/SARPR200605_.pdf).Berlin:HumboldtUniversityBerlin.p.17.Retrieved4February2011."The
presentedmethodsofferaveryeasyandefficientwaytomodifyyourdatasothatitwillcomputetoaCRCyouwantoratleastknowinadvance."
4. ^CamWinget,NancyHousley,RussWagner,DavidWalker,Jesse(May2003)."SecurityFlawsin802.11DataLinkProtocols".Communicationsof
theACM46(5):3539.doi:10.1145/769800.769823(http://dx.doi.org/10.1145%2F769800.769823).
5. ^abcWilliams,RossN.(24September1996)."APainlessGuidetoCRCErrorDetectionAlgorithmsV3.00"
(http://www.repairfaq.org/filipg/LINK/F_crc_v3.html).Retrieved5June2010.
6. ^Press,WHTeukolsky,SAVetterling,WTFlannery,BP(2007)."Section22.4CyclicRedundancyandOtherChecksums"
(http://apps.nrbook.com/empanel/index.html#pg=1168).NumericalRecipes:TheArtofScientificComputing(3rded.).NewYork:CambridgeUniversity
Press.ISBN9780521880688.
7. ^abcdefgKoopman,PhilipChakravarty,Tridib(June2004)."CyclicRedundancyCode(CRC)PolynomialSelectionForEmbeddedNetworks"
(http://www.ece.cmu.edu/~koopman/roses/dsn04/koopman04_crc_poly_embedded.pdf).TheInternationalConferenceonDependableSystemsand
Networks:145154.doi:10.1109/DSN.2004.1311885(http://dx.doi.org/10.1109%2FDSN.2004.1311885).ISBN0769520529.Retrieved14January
2011.
8. ^Cook,Greg(6July2012)."CatalogueofparametrisedCRCalgorithms"(http://reveng.sourceforge.net/crccatalogue/all.htm).Retrieved7July2012.
9. ^Castagnoli,G.Bruer,S.Herrmann,M.(June1993)."OptimizationofCyclicRedundancyCheckCodeswith24and32ParityBits".IEEE
TransactionsonCommunications41(6):883.doi:10.1109/26.231911(http://dx.doi.org/10.1109%2F26.231911).
10. ^abcdefKoopman,Philip(July2002)."32BitCyclicRedundancyCodesforInternetApplications"
(http://www.ece.cmu.edu/~koopman/networks/dsn02/dsn02_koopman.pdf).TheInternationalConferenceonDependableSystemsandNetworks:459
468.doi:10.1109/DSN.2002.1028931(http://dx.doi.org/10.1109%2FDSN.2002.1028931).ISBN0769515975.Retrieved14January2011.
11. ^Brayer,Kenneth(August1975)."Evaluationof32DegreePolynomialsinErrorDetectionontheSATINIVAutovonErrorPatterns"
(http://www.dtic.mil/srch/doc?collection=t3&id=ADA014825).NationalTechnicalInformationService.p.74.Retrieved3February2011.
12. ^Hammond,JosephL.,Jr.Brown,JamesE.Liu,ShyanShiang(1975)."DevelopmentofaTransmissionErrorModelandanErrorControlModel"
(http://www.dtic.mil/cgibin/GetTRDoc?AD=ADA013939&Location=U2&doc=GetTRDoc.pdf).Unknown(NationalTechnicalInformationService,
publishedMay1975)76:74.Bibcode:1975STIN...7615344H(http://adsabs.harvard.edu/abs/1975STIN...7615344H).Retrieved7July2012.
13. ^Brayer,KennethHammond,JosephL.,Jr.(December1975)."EvaluationoferrordetectionpolynomialperformanceontheAUTOVONchannel".
"ConferenceRecord".IEEENationalTelecommunicationsConference,NewOrleans,La1.NewYork:InstituteofElectricalandElectronicsEngineers.
pp.821to825.Bibcode:1975ntc.....1....8B(http://adsabs.harvard.edu/abs/1975ntc.....1....8B).
14. ^Ewing,GregoryC.(March2010)."ReverseEngineeringaCRCAlgorithm"(http://www.cosc.canterbury.ac.nz/greg.ewing/essays/CRCReverse
http://en.wikipedia.org/wiki/Cyclic_redundancy_check

7/9

11/22/2014

CyclicredundancycheckWikipedia,thefreeencyclopedia

14. ^Ewing,GregoryC.(March2010)."ReverseEngineeringaCRCAlgorithm"(http://www.cosc.canterbury.ac.nz/greg.ewing/essays/CRCReverse
Engineering.html).Christchurch:UniversityofCanterbury.Retrieved26July2011.
15. ^Class1Generation2UHFRFIDProtocol(http://www.gs1.org/gsmp/kc/epcglobal/uhfc1g2/uhfc1g2_1_2_0standard20080511.pdf).1.2.0.
EPCglobal.23October2008.p.35.Retrieved4July2012.(Table6.12)
16. ^abcdefPhysicallayerstandardforcdma2000spreadspectrumsystems(http://www.3gpp2.org/public_html/specs/C.S0002D_v2.0_051006.pdf).
RevisionDversion2.0.3rdGenerationPartnershipProject2.October2005.pp.289292.Retrieved14October2013.
17. ^abChakravarty,Tridib(December2001).PerformanceofCyclicRedundancyCodesforEmbeddedNetworks
(http://www.ece.cmu.edu/~koopman/thesis/chakravarty.pdf)(Thesis).PhilipKoopman,advisor.Pittsburgh:CarnegieMellonUniversity.pp.5,18.
Retrieved8July2013.
18. ^Richardson,Andrew(17March2005).WCDMAHandbook(http://books.google.co.uk/books?
id=yN5lve5L4vwC&lpg=PA223&dq=&pg=PA223#v=onepage&q&f=false).Cambridge,UK:CambridgeUniversityPress.p.223.ISBN0521828155.
19. ^abFlexRayProtocolSpecification.3.0.1.FlexrayConsortium.October2010.p.114.(4.2.8HeaderCRC(11bits))
20. ^Perez,A.Wismer&Becker(1983)."ByteWiseCRCCalculations".IEEEMicro3(3):4050.doi:10.1109/MM.1983.291120
(http://dx.doi.org/10.1109%2FMM.1983.291120).
21. ^Ramabadran,T.V.Gaitonde,S.S.(1988)."AtutorialonCRCcomputations".IEEEMicro8(4):6275.doi:10.1109/40.7773
(http://dx.doi.org/10.1109%2F40.7773).
22. ^Ely,S.R.Wright,D.T.(March1982).L.F.RadioData:specificationofBBCexperimentaltransmissions1982
(http://downloads.bbc.co.uk/rd/pubs/reports/198202.pdf).ResearchDepartment,EngineeringDivision,TheBritishBroadcastingCorporation.p.9.
Retrieved11October2013.
23. ^Asignallingstandardfortrunkedprivatelandmobileradiosystems(MPT1327)
(http://www.ofcom.org.uk/static/archive/ra/publication/mpt/mpt_pdf/mpt1327.pdf)(3rded.).Ofcom.June1997.p.33.Retrieved16July2012.(3.2.3
Encodinganderrorchecking)
24. ^Rehmann,AlbertMestre,JosD.(February1995)."AirGroundDataLinkVHFAirlineCommunicationsandReportingSystem(ACARS)
PreliminaryTestReport"(http://ntl.bts.gov/lib/1000/1200/1290/tn95_66.pdf).FederalAviationAuthorityTechnicalCenter.p.5.Retrieved7July2012.
25. ^"ETSIEN3001753".V2.2.1.SophiaAntipolis,France:EuropeanTelecommunicationsStandardsInstitute.November2008.
26. ^Thaler,Pat(28August2003)."16bitCRCpolynomialselection"(http://www.t10.org/ftp/t10/document.03/03290r0.pdf).INCITST10.Retrieved11
August2009.
27. ^abCANwithFlexibleDataRateSpecification(http://www.boschsemiconductors.de/media/pdf_1/canliteratur/can_fd_spec.pdf).1.0.RobertBosch
GmbH.April17,2012.p.13.(3.2.1DATAFRAME)
28. ^Boutell,ThomasRandersPehrson,Glennetal.(14July1998)."PNG(PortableNetworkGraphics)Specification,Version1.2"
(http://www.libpng.org/pub/png/spec/1.2/PNGStructure.html).Libpng.org.Retrieved3February2011.
29. ^AIXMPrimer(http://www.eurocontrol.int/sites/default/files/content/documents/informationmanagement/20060320aixmprimer.pdf).4.5.European
OrganisationfortheSafetyofAirNavigation.20March2006.Retrieved4July2012.
30. ^Gammel,BerndtM.(31October2005).Matpackdocumentation:CryptoCodes(http://www.matpack.de/index.html#DOWNLOAD).Matpack.de.
Retrieved21April2013.(Note:MpCRC.htmlisincludedwiththeMatpackcompressedsoftwaresourcecode,under/html/LibDoc/Crypto)
31. ^Geremia,Patrick(April1999)."Cyclicredundancycheckcomputation:animplementationusingtheTMS320C54x"
(http://www.ti.com/lit/an/spra530/spra530.pdf)(SPRA530).TexasInstruments.p.5.Retrieved4July2012.
32. ^Jones,DavidT."AnImproved64bitCyclicRedundancyCheckforProteinSequences"(http://www.cs.ucl.ac.uk/staff/d.jones/crcnote.pdf).University
CollegeLondon.Retrieved15December2009.

Externallinks
MathPagesCyclicRedundancyChecks(http://www.mathpages.com/home/kmath458.htm):overviewwithanexplanationoferror
detectionofdifferentpolynomials.
TheCRCPitstop(http://www.ross.net/crc/)homeofAPainlessGuidetoCRCErrorDetectionAlgorithms
(http://www.ross.net/crc/crcpaper.html)
Black,R.(February1994)."FastCRC32inSoftware"(http://www.cl.cam.ac.uk/Research/SRG/bluebook/21/crc/crc.html).TheBlue
Book.SystemsResearchGroup,ComputerLaboratory,UniversityofCambridge.algorithm4isusedinLinuxandinfozip'szipand
unzip.
Kounavis,M.Berry,F.(2005)."ASystematicApproachtoBuildingHighPerformance,Softwarebased,CRCgenerators"
(http://www.intel.com/technology/comms/perfnet/download/CRC_generators.pdf).Intel.,Slicingby4andslicingby8algorithms
CRCAnalysiswithBitfilters(http://einstein.informatik.unioldenburg.de/papers/CRCBitfilterEng.pdf)
CyclicRedundancyCheck(http://www.hackersdelight.org/crc.pdf):theory,practice,hardware,andsoftwarewithemphasisonCRC32.
http://en.wikipedia.org/wiki/Cyclic_redundancy_check

8/9

11/22/2014

CyclicredundancycheckWikipedia,thefreeencyclopedia

AsamplechapterfromHenryS.Warren,Jr.Hacker'sDelight.
ReverseEngineeringaCRCAlgorithm(http://www.cosc.canterbury.ac.nz/greg.ewing/essays/CRCReverseEngineering.html)
CatalogueofparametrisedCRCalgorithms(http://reveng.sourceforge.net/crccatalogue/all.htm)
Koopman,Phil."Blog:ChecksumandCRCCentral"(http://checksumcrc.blogspot.com/).includeslinkstoPDFsgiving16and32bit
CRCHammingdistances
Retrievedfrom"http://en.wikipedia.org/w/index.php?title=Cyclic_redundancy_check&oldid=630867205"
Categories: Binaryarithmetic Cyclicredundancychecks Finitefields
Thispagewaslastmodifiedon24October2014at00:37.
TextisavailableundertheCreativeCommonsAttributionShareAlikeLicenseadditionaltermsmayapply.Byusingthissite,youagree
totheTermsofUseandPrivacyPolicy.WikipediaisaregisteredtrademarkoftheWikimediaFoundation,Inc.,anonprofit
organization.

http://en.wikipedia.org/wiki/Cyclic_redundancy_check

9/9

You might also like