Ciklikus redundancia kód

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. január 2-án felülvizsgált verziótól ; az ellenőrzésekhez 10 szerkesztés szükséges .

Ciklikus redundancia  ellenőrzés _ , a CRC [1] ) egy algoritmus azadatok integritásának ellenőrzésére szolgáló ellenőrző összeg megtalálására [2] . A CRC a hibajavító kódolás gyakorlati alkalmazása, amely egy ciklikus kód bizonyos matematikai tulajdonságain.

Bevezetés

A ciklikus kódok fogalma meglehetősen tág [3] . Az angol szakirodalomban a CRC kétféleképpen értendő, a szövegkörnyezettől függően: ciklikus redundáns kód vagy ciklikus redundáns ellenőrzés [4] . Az első fogalom a ciklikus kódok matematikai jelenségét jelenti, a második - ennek a jelenségnek a konkrét alkalmazását hash függvényként .

A ciklikus kódok nem csak könnyen megvalósíthatók, de megvan az az előnyük is, hogy alkalmasak a burst hibák észlelésére: a hibás adatkarakterek folyamatos sorozata az üzenetekben. Ez azért fontos, mert a burst hibák gyakori átviteli hibák számos kommunikációs csatornában, beleértve a mágneses és optikai tárolóeszközöket is. Általában egy n-bites CRC, amelyet egy tetszőleges hosszúságú adatblokkra alkalmaznak, és közvetlenül az adatokat követi az ellenőrző összeg, minden n bitnél nem hosszabb hibasorozatot észlel, és az összes hosszabb hibalöket arányát. érzékeli (1 − 2 −n ).

Zajjavító kódolás

Az első kísérletek redundáns információkkal rendelkező kódok létrehozására jóval a modern számítógépek megjelenése előtt kezdődtek. Például az 1960-as években Reed és Solomon kifejlesztett egy hatékony kódolási technikát - a Reed-Solomon kódot . Használata ekkor még nem volt lehetséges, mivel az első algoritmusok nem tudták ésszerű időn belül végrehajtani a dekódolási műveletet. Berlekamp 1968 -ban megjelent alapvető munkája véget vetett ennek a kérdésnek . Ezt a technikát , amelynek gyakorlati alkalmazására Massey egy évvel később rámutatott , a mai napig használják az RS-kódolt adatokat fogadó digitális eszközökben. Sőt: ez a rendszer nem csak a pozíciók meghatározását teszi lehetővé, hanem a hibás kódszimbólumok (leggyakrabban oktett ) kijavítását is.

De nem mindig van szükség hibajavításra a kódból . Számos modern kommunikációs csatorna rendelkezik elfogadható tulajdonságokkal, és gyakran elegendő ellenőrizni, hogy az átvitel sikeres volt-e, vagy voltak- e nehézségek; a hibák szerkezete és a helytelen szimbólumok konkrét elhelyezkedése egyáltalán nem érdekli a fogadó felet. És ilyen körülmények között az ellenőrző összegeket használó algoritmusok nagyon sikeres megoldásnak bizonyultak. Az ilyen feladatokra a CRC a legalkalmasabb: az alacsony erőforrás-költségek, a könnyű implementáció és a lineáris ciklikus kódok elméletéből már kialakult matematikai apparátus biztosította óriási népszerűségét.

Bár a CRC kódot általában csak hibadetektálásra használják, matematikai tulajdonságai lehetővé teszik egyetlen hiba megtalálását és kijavítását egy bitblokkban, ha a védett blokk minden bitje (beleértve az ellenőrző biteket is) felosztáskor saját egyedi maradékot tartalmaz. a generátor polinom által. Például, ha a generáló polinom irreducibilis, és a blokk hossza nem haladja meg a generált ciklikus csoport sorrendjét.

Ellenőrző összeg

Általában az ellenőrző összeg egy bizonyos séma szerint kiszámított érték a kódolt üzenet alapján. A szisztematikus kódolásban az ellenőrző információk hozzá vannak rendelve a továbbított adatokhoz. A fogadó oldalon az előfizető ismeri az ellenőrző összeg kiszámításának algoritmusát: ennek megfelelően a program képes ellenőrizni a kapott adatok helyességét.

Amikor a csomagokat hálózati csatornán továbbítják, a forrásinformációk torzulhatnak különböző külső hatások miatt: elektromos interferencia, rossz időjárási viszonyok és sok más. A technika lényege, hogy az ellenőrzőösszeg jó tulajdonságai mellett az esetek túlnyomó többségében az üzenet hibája az ellenőrzőösszeg megváltozásához vezet. Ha az eredeti és a számított összeg nem egyezik, akkor döntés születik a kapott adatok érvénytelenségéről, és kérhető a csomag újraküldése.

Matematikai leírás

A CRC algoritmus a bináris polinomok maradékával, azaz véges mező feletti polinomokkal való osztás tulajdonságain alapul . A CRC érték lényegében a bemenetnek megfelelő polinom valamilyen rögzített generátorpolinommal való osztásának maradéka .

Minden véges bitsorozat egy az egyhez van társítva egy bináris polinomhoz, amelynek együtthatósorozata az eredeti sorozat. Például az 1011010 bitsorozat a polinomnak felel meg:

A -nál kisebb fokú különböző polinomok száma egyenlő -vel , ami megegyezik az összes hosszúságú bináris sorozat számával .

Az ellenőrzőösszeg értéke egy polinomot generáló algoritmusban egy hosszúságú bitsorozatként van definiálva, amely azt a polinomot reprezentálja, amely a bemeneti bitfolyamot képviselő polinomnak a polinommal való osztásának maradékát eredményezi :

ahol

 a CRC értéket képviselő polinom;  egy polinom, amelynek együtthatói a bemeneti adatokat reprezentálják;  egy generáló polinom;  a generáló polinom foka.

A szorzás úgy történik, hogy a bemeneti sorozathoz nulla bitet rendelünk, ami javítja a rövid bemeneti sorozatok kivonatolási minőségét.

Ha különböző eredeti polinomok maradékával osztunk egy fokú generáló polinommal, az osztásból különböző maradékokat kaphatunk . gyakran egy irreducibilis polinom . Általában az egyes alkalmazások kontextusában a hash függvény követelményeinek megfelelően választják ki.

Azonban számos szabványos polinomgenerátor létezik, amelyek jó matematikai és korrelációs tulajdonságokkal rendelkeznek (minimális ütközések száma , könnyű számítás), amelyek közül néhányat az alábbiakban sorolunk fel.

CRC számítás

Algoritmus paraméterei

A CRC egyik fő paramétere a generáló polinom.

A generátor polinomhoz kapcsolódó másik paraméter a foka , amely meghatározza a CRC érték kiszámításához használt bitek számát. A gyakorlatban a 8, 16 és 32 bites szavak a legelterjedtebbek, ami a modern számítástechnika architektúrájának sajátosságainak következménye.

Egy másik paraméter a szó kezdő (kezdő) értéke. Ezek a paraméterek teljesen meghatározzák a "hagyományos" CRC számítási algoritmust. Vannak az algoritmus módosításai is, például a feldolgozási bitek fordított sorrendjének használatával.

Az eljárás leírása

Az első szó a fájlból származik - lehet bit (CRC-1), bájt (CRC-8) vagy bármilyen más elem. Ha a szó legjelentősebb bitje "1", akkor a szó egy bittel balra tolódik, majd egy XOR művelet következik egy generáló polinommal. Ennek megfelelően, ha a szó legjelentősebb bitje "0", akkor az XOR művelet nem kerül végrehajtásra a shift után. Az eltolás után a legjelentősebb bit elveszik, és a fájl következő bitje töltődik be a legkisebb jelentőségű bit helyére, és a művelet addig ismétlődik, amíg a fájl utolsó bitje be nem töltődik. Miután végigment a teljes fájlon, a maradék a szóban marad, ami az ellenőrző összeg.

Népszerű és szabványosított polinomok

Míg a ciklikus redundancia kódok a szabványok részét képezik, ennek a kifejezésnek nincs általánosan elfogadott definíciója – a különböző szerzők értelmezései gyakran ellentmondanak egymásnak [1] [5] .

Ez a paradoxon vonatkozik a generátorpolinom kiválasztására is: gyakran a szabványosított polinomok nem a leghatékonyabbak a megfelelő ellenőrzési redundancia kódjuk statisztikai tulajdonságait tekintve .

Azonban sok széles körben használt polinom nem a leghatékonyabb az összes lehetséges közül. 1993-2004-ben tudósok egy csoportja 16 [1] 24 és 32 bites kapacitású polinomok generálásával foglalkozott [6] [7] , és olyan polinomokat talált, amelyek kódtávolság tekintetében jobb teljesítményt nyújtanak, mint a szabványos polinomok. [7] . A tanulmány egyik eredménye már bekerült az iSCSI protokollba .

A legnépszerűbb és legajánlottabb IEEE -polinom a CRC-32-hez az Ethernetben , FDDI -ben használatos ; ez a polinom is egy Hamming-kód generátor [8] . Egy másik polinom - CRC-32C - használatával ugyanazt a teljesítményt érheti el az eredeti üzenet 58 bittől 131 kbps-ig terjedő hosszával, és a bemeneti üzenet hosszának egyes tartományaiban ez még magasabb is lehet, így ma népszerű [7] . Például az ITU-T G.hn szabvány a CRC-32C-t használja a rakomány hibáinak észlelésére.

Az alábbi táblázat felsorolja a leggyakoribb polinomokat - CRC generátorokat. A gyakorlatban a CRC számítása magában foglalhatja az elő- és utóinverziót, valamint a bitfeldolgozás fordított sorrendjét. A CRC saját megvalósításai nem nulla kezdeti regiszterértékeket használnak, hogy megnehezítsék a kód elemzését.

Név Polinom Ábrázolások: [9] normál / fordított / fordítottból fordított
CRC-1 (hardverhiba-ellenőrzésben használatos; paritásbitként is ismert ) 0x1 / 0x1 / 0x1
CRC-4-ITU ( ITU G.704 [10] ) 0x3 / 0xC / 0x9
CRC-5-EPC ( Gen 2 RFID [11] ) 0x09 / 0x12 / 0x14
CRC-5-ITU ( ITU G.704 [12] ) 0x15 / 0x15 / 0x1A
CRC-5-USB ( USB token csomagok) 0x05 / 0x14 / 0x12
CRC-6-ITU ( ITU G.704 [13] ) 0x03 / 0x30 / 0x21
CRC-7 (távközlési rendszerek, ITU-T G.707 [14] , ITU-T G.832 [15] , MMC , SD ) 0x09 / 0x48 / 0x44
CRC-8- CCITT ( ATM HEC ), ISDN fejléc-hibakezelés és cellahatárolás ITU-T I.432.1 (02/99) 0x07 / 0xE0 / 0x83
CRC-8- Dallas / Maxim ( 1 vezetékes busz ) 0x31 / 0x8C / 0x98
CRC-8 ( ETSI EN 302 307 [16] , 5.1.4) 0xD5 / 0xAB / 0xEA [1]
CRC-8-SAE J1850 0x1D / 0xB8 / 0x8E
CRC-10 0x233 / 0x331 / 0x319
CRC-11 ( FlexRay [17] ) 0x385 / 0x50E / 0x5C2
CRC-12 (távközlési rendszerek [18] [19] ) 0x80F / 0xF01 / 0xC07
CRC-15- CAN 0x4599 / 0x4CD1 / 0x62CC
CRC-16- IBM ( Bisync , Modbus , USB , ANSI X3.28 [20] , sok más ; más néven CRC-16 és CRC-16-ANSI ) 0x8005 / 0xA001 / 0xC002
CRC-16-CCITT ( X.25 , HDLC , XMODEM , Bluetooth , SD stb.) 0x1021 / 0x8408 / 0x8810 [1]
CRC-16- T10 - DIF ( SCSI DIF) 0x8BB7 [21] / 0xEDD1 / 0xC5DB
CRC-16- DNP (DNP, IEC 870 , M-Bus ) 0x3D65 / 0xA6BC / 0x9EB2
CRC-16-Fletcher Nem CRC; lásd Fletcher ellenőrző összegét Adler-32 A&B CRC - ben használt
CRC-24 ( FlexRay [17] ) 0x5D6DCB / 0xD3B6BA / 0xAEB6E5
CRC-24 Radix-64 ( OpenPGP ) 0x864CFB / 0xDF3261 / 0xC3267D
CRC-30 ( CDMA ) 0x2030B9C7 / 0x38E74301 / 0x30185CE3
CRC-32-Adler Nem CRC; lásd Adler-32 Lásd: Adler-32
CRC-32 – IEEE 802.3 ( V.42 , MPEG-2 , PNG [22] , POSIX cksum ) 0x04C11DB7 / 0xEDB88320 / 0x82608EDB [7]
CRC-32C (Castagnoli) ( iSCSI , G.hn hasznos terhelés) 0x1EDC6F41 / 0x82F63B78 ​​​​/ 0x8F6E37A0 [7]
CRC-32K (Koopman) 0x741B8CD7 / 0xEB31D82E / 0xBA0DC66B [7]
CRC-32Q (repülés; AIXM [23] ) 0x814141AB / 0xD5828281 / 0xC0A0A0D5
CRC-64-ISO ( HDLC - ISO 3309 ) 0x000000000000001B / 0xD800000000000000 / 0x8000000000000000D
CRC-64- ECMA [24] 0x42F0E1EBA9EA3693 / 0xC96C5795D7870F42 / 0xA17870F5D4F51B49

Jelenleg a CRC-128 (IEEE) és a CRC-256 (IEEE) szabványok[ mikor? ] kriptográfiai hash függvények váltották fel .

CRC algoritmus specifikációi

Az egyik leghíresebb a Ross N. Williams technika [25] . A következő opciókat használja:

Példák [26]
Név Szélesség Poly Benne RefIn RefOut XorOut Jelölje be
CRC-3/ROHC 3 0x3 0x7 igaz igaz 0x0 0x6
CRC-4/ITU négy 0x3 0x0 igaz igaz 0x0 0x7
CRC-5/EPC 5 0x9 0x9 hamis hamis 0x0 0x0
CRC-5/ITU 5 0x15 0x0 igaz igaz 0x0 0x7
CRC-5/USB 5 0x5 0x1F igaz igaz 0x1F 0x19
CRC-6/CDMA2000-A 6 0x27 0x3F hamis hamis 0x0 0xD
CRC-6/CDMA2000-B 6 0x7 0x3F hamis hamis 0x0 0x3B
CRC-6/DARC 6 0x19 0x0 igaz igaz 0x0 0x26
CRC-6/ITU 6 0x3 0x0 igaz igaz 0x0 0x6
CRC-7 7 0x9 0x0 hamis hamis 0x0 0x75
CRC-7/ROHC 7 0x4F 0x7F igaz igaz 0x0 0x53
CRC-8 nyolc 0x7 0x0 hamis hamis 0x0 0xF4
CRC-8/CDMA2000 nyolc 0x9B 0xFF hamis hamis 0x0 0xDA
CRC-8/DARC nyolc 0x39 0x0 igaz igaz 0x0 0x15
CRC-8/DVB-S2 nyolc 0xD5 0x0 hamis hamis 0x0 0xBC
CRC-8/EBU nyolc 0x1D 0xFF igaz igaz 0x0 0x97
CRC-8/I-CODE nyolc 0x1D 0xFD hamis hamis 0x0 0x7E
CRC-8/ITU nyolc 0x7 0x0 hamis hamis 0x55 0xA1
CRC-8/MAXIM nyolc 0x31 0x0 igaz igaz 0x0 0xA1
CRC-8/ROHC nyolc 0x7 0xFF igaz igaz 0x0 0xD0
CRC-8/WCDMA nyolc 0x9B 0x0 igaz igaz 0x0 0x25
CRC-10 tíz 0x233 0x0 hamis hamis 0x0 0x199
CRC-10/CDMA2000 tíz 0x3D9 0x3FF hamis hamis 0x0 0x233
CRC-11 tizenegy 0x385 0x1A hamis hamis 0x0 0x5A3
CRC-12/3GPP 12 0x80F 0x0 hamis igaz 0x0 0xDAF
CRC-12/CDMA2000 12 0xF13 0xFFF hamis hamis 0x0 0xD4D
CRC-12/DECT 12 0x80F 0x0 hamis hamis 0x0 0xF5B
CRC-13/BBC 13 0x1CF5 0x0 hamis hamis 0x0 0x4FA
CRC-14/DARC tizennégy 0x805 0x0 igaz igaz 0x0 0x82D
CRC-15 tizenöt 0x4599 0x0 hamis hamis 0x0 0x59E
CRC-15/MPT1327 tizenöt 0x6815 0x0 hamis hamis 0x1 0x2566
CRC-16/ARC 16 0x8005 0x0 igaz igaz 0x0 0xBB3D
CRC-16/AUG-CCITT 16 0x1021 0x1D0F hamis hamis 0x0 0xE5CC
CRC-16/BUYPASS 16 0x8005 0x0 hamis hamis 0x0 0xFEE8
CRC-16/CCITT-HAMIS 16 0x1021 0xFFFF hamis hamis 0x0 0x29B1
CRC-16/CDMA2000 16 0xC867 0xFFFF hamis hamis 0x0 0x4C06
CRC-16/DDS-110 16 0x8005 0x800D hamis hamis 0x0 0x9ECF
CRC-16/DECT-R 16 0x589 0x0 hamis hamis 0x1 0x7E
CRC-16/DECT-X 16 0x589 0x0 hamis hamis 0x0 0x7F
CRC-16/DNP 16 0x3D65 0x0 igaz igaz 0xFFFF 0xEA82
CRC-16/EN-13757 16 0x3D65 0x0 hamis hamis 0xFFFF 0xC2B7
CRC-16/GENIBUS 16 0x1021 0xFFFF hamis hamis 0xFFFF 0xD64E
CRC-16/MAXIM 16 0x8005 0x0 igaz igaz 0xFFFF 0x44C2
CRC-16/MCRF4XX 16 0x1021 0xFFFF igaz igaz 0x0 0x6F91
CRC-16/RIELLO 16 0x1021 0xB2AA igaz igaz 0x0 0x63D0
CRC-16/T10-DIF 16 0x8BB7 0x0 hamis hamis 0x0 0xD0DB
CRC-16/TELEDISK 16 0xA097 0x0 hamis hamis 0x0 0xFB3
CRC-16/TMS37157 16 0x1021 0x89EC igaz igaz 0x0 0x26B1
CRC-16/USB 16 0x8005 0xFFFF igaz igaz 0xFFFF 0xB4C8
CRC-A 16 0x1021 0xC6C6 igaz igaz 0x0 0xBF05
CRC-16/KERMIT 16 0x1021 0x0 igaz igaz 0x0 0x2189
CRC-16/MODBUS 16 0x8005 0xFFFF igaz igaz 0x0 0x4B37
CRC-16/X-25 16 0x1021 0xFFFF igaz igaz 0xFFFF 0x906E
CRC-16/XMODEM 16 0x1021 0x0 hamis hamis 0x0 0x31C3
CRC-24 24 0x864CFB 0xB704CE hamis hamis 0x0 0x21CF02
CRC-24/FLEXRAY-A 24 0x5D6DCB 0xFEDCBA hamis hamis 0x0 0x7979BD
CRC-24/FLEXRAY-B 24 0x5D6DCB 0xABCDEF hamis hamis 0x0 0x1F23B8
CRC-31/PHILIPS 31 0x4C11DB7 0x7FFFFFFF hamis hamis 0x7FFFFFFF 0xCE9E46C
CRC-32/ zlib 32 0x4C11DB7 0xFFFFFFFF igaz igaz 0xFFFFFFFF 0xCBF43926
CRC-32/BZIP2 32 0x4C11DB7 0xFFFFFFFF hamis hamis 0xFFFFFFFF 0xFC891918
CRC-32C 32 0x1EDC6F41 0xFFFFFFFF igaz igaz 0xFFFFFFFF 0xE3069283
CRC-32D 32 0xA833982B 0xFFFFFFFF igaz igaz 0xFFFFFFFF 0x87315576
CRC-32/MPEG-2 32 0x4C11DB7 0xFFFFFFFF hamis hamis 0x0 0x376E6E7
CRC-32/POSIX 32 0x4C11DB7 0x0 hamis hamis 0xFFFFFFFF 0x765E7680
CRC-32Q 32 0x814141AB 0x0 hamis hamis 0x0 0x3010BF7F
CRC-32/JAMCRC 32 0x4C11DB7 0xFFFFFFFF igaz igaz 0x0 0x340BC6D9
CRC-32/XFER 32 0xAF 0x0 hamis hamis 0x0 0xBD0BE338
CRC-40/GSM 40 0x4820009 0x0 hamis hamis 0xFFFFFFFFFF 0xD4164FC646
CRC-64 64 0x42F0E1EBA9EA3693 0x0 hamis hamis 0x0 0x6C40DF5F0B497347
CRC-64/WE 64 0x42F0E1EBA9EA3693 0xFFFFFFFFFFFFFF hamis hamis 0xFFFFFFFFFFFFFF 0x62EC59E3F1A4F00A
CRC-64/XZ 64 0x42F0E1EBA9EA3693 0xFFFFFFFFFFFFFF igaz igaz 0xFFFFFFFFFFFFFF 0x995DC9BBDF1939FA

Jegyzetek

  1. 1 2 3 4 5 Philip Koopman, Tridib Chakravarty. Ciklikus redundancia kód (CRC) polinom kiválasztása beágyazott hálózatokhoz (2004). A jelentkezés kelte: ???. Archiválva az eredetiből 2011. augusztus 22-én.
  2. Internetes Informatikai Egyetem. Előadás: Vezeték nélküli hálózatok szervezése
  3. Internetes Informatikai Egyetem. Előadás: Ethernet/Fast Ethernet hálózati algoritmusok
  4. Walma, M.; Csővezetékes ciklikus redundancia-ellenőrzés (CRC) számítása
  5. Greg Cook. Paraméterezett CRC algoritmusok katalógusa (2009. április 29.). A jelentkezés kelte: ???. Archiválva az eredetiből 2011. augusztus 22-én.
  6. G. Castagnoli, S. Braeuer, M. Herrman. Ciklikus redundancia-ellenőrző kódok optimalizálása 24 és 32 paritásbittel // IEEE Transactions on Communications. - 1993. június - T. 41 , 6. sz . - S. 883 . - doi : 10.1109/26.231911 .
  7. 1 2 3 4 5 6 P. Koopman. 32 bites ciklikus redundancia kódok internetes alkalmazásokhoz  // A megbízható rendszerek és hálózatok nemzetközi konferenciája. - 2002. június - S. 459 . - doi : 10.1109/DSN.2002.1028931 .
  8. Brayer, K; Hammond, JL Jr. (1975. december). „A hibaészlelési polinom teljesítményének értékelése az AUTOVON csatornán”. konferencia rekordja . National Telecommunications Conference, New Orleans, La. 1 . New York: Institute of Electrical and Electronics Engineers. pp. 8-21-től 8-25-ig. Elavult használt paraméter |month=( súgó )
  9. A legjelentősebb bit kimaradt az ábrázolásokból.
  10. G.704 , p. 12
  11. Class-1 Generation-2 UHF RFID Protocol 1.2.0 verzió . - 2008. október 23. - S. 35 . Az eredetiből archiválva: 2008. november 20.
  12. G.704 , p. 9
  13. G.704 , p. 3
  14. G.707: Hálózati csomópont interfész a szinkron digitális hierarchiához (SDH)
  15. G.832: SDH elemek szállítása PDH hálózatokon – Keret- és multiplexelő struktúrák
  16. EN 302 307 Digital Video Broadcasting (DVB); Második generációs keretszerkezet, csatornakódoló és modulációs rendszerek műsorszóráshoz, interaktív szolgáltatásokhoz, hírgyűjtéshez és más szélessávú műholdas alkalmazásokhoz (DVB-S2)
  17. 1 2 A FlexRay Protokoll specifikáció 2.1 verziója, A. változat - 2005. december 22. - 93. o .
  18. A. Perez, Wismer, Becker. Byte-Wise CRC számítások // IEEE Micro. - 1983. - V. 3 , 3. sz . - S. 40-50 . - doi : 10.1109/MM.1983.291120 .
  19. TV Ramabadran, SS Gaitonde. Oktatóanyag a CRC számításokról // IEEE Micro. - 1988. - V. 8 , 4. sz . - S. 62-75 . - doi : 10.1109/40.7773 .
  20. Archivált másolat (a hivatkozás nem elérhető) . Letöltve: 2009. október 16. Az eredetiből archiválva : 2009. október 1.. 
  21. Pat Thaler. 16 bites CRC polinom kiválasztása . INCITS T10 (2003. augusztus 28.). A jelentkezés kelte: ???. Archiválva az eredetiből 2011. augusztus 22-én.
  22. Thomas Boutell, Glenn Randers-Pehrson és munkatársai PNG (Portable Network Graphics) specifikáció, 1.2-es verzió (1998. július 14.). A jelentkezés kelte: ???. Archiválva az eredetiből 2011. augusztus 22-én.
  23. AIXM Primer 4.5-ös verzió . Európai Szervezet a Légiközlekedés Biztonságáért (2006. március 20.). A jelentkezés kelte: ???. Archiválva az eredetiből 2011. augusztus 22-én.
  24. ECMA-182 p. 51
  25. Ross N. Williams. CRC Rocksoft (nem elérhető link) (1993). Letöltve: 2012. április 17. Az eredetiből archiválva : 2011. szeptember 3.. 
  26. Greg Cook. Paraméterezett CRC-algoritmusok katalógusa (2016. január 18.).

Irodalom

Linkek

CRC számológépek