Cyclic Redundancy Check
Cyclic Redundancy Check
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]
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