Ellenőrző összeg (checksum): definíció, CRC, Hamming és mod97 példák
Ismerd meg az ellenőrző összeg (checksum) működését: CRC, Hamming és mod97 példákkal, banki és adattovábbítási hibadetektálás egyszerű magyarázata.
Ellenőrző összeg (angolul checksum) egy rövid szám- vagy bitegyüttes, amelyet arra használnak, hogy ellenőrizzék: a hosszabb adat (például számsor, fájl vagy üzenet) átvitele vagy leírása közben nem keletkezett-e hiba. Az számkiegészítés egyszerű formái egyfajta redundanciaellenőrzés: a számjegyek vagy bájtok egy részét a főadatból számítják ki, és melléjük írják. Számításának több, különböző erősségű és tulajdonságú módja létezik: a legegyszerűbb esetben a számjegyeket egyszerűen összeadjuk, de ez önmagában nem képes például a számjegyek felcserélődésének felismerésére. Ennél megbízhatóbb algoritmusok például a Hamming-kód, a ciklikus redundanciaellenőrzés (CRC) vagy a moduláris aritmetika, amelyek eltérő hibadetektálási és -javítási képességekkel rendelkeznek. Az ellenőrző összegek egyik gyakori felhasználási területe a bankszámlaszámok és más azonosítók helyességének gyors ellenőrzése.
Gyakorlati példa: portugál bankszámlaszám (mod 97)
A portugál bankszámla-azonosítók jó példa arra, hogyan működnek az ellenőrző összegek a gyakorlatban. Ezek 21 számjegyűek. Az első 19 számjegy azonosítja a bankot, a fiókot és a számlaszámot; az utolsó két számjegy a moduláris aritmetikán alapuló "mod 97" ellenőrző összeg.
Egy tipikus portugál bankszámlaszám formázottan: 0002.0123.12345678901.54. Pontok nélkül: 000201231234567890154. A számjegyek jelentése:
- A "0002" számjegyek a bankot jelölik.
- A "0123" számjegyek a bankfiókot jelölik.
- Az "12345678901" számjegyek a számlaszámot jelölik.
- Az "54" számjegyek az ellenőrző összeget jelölik.
Ha a 000201231234567890154 (a bankszámlaszám a pontok nélkül) osztjuk 97-tel, a válasz 207458809978249 maradék 1. Mivel a maradék "1", a bankszámla-azonosítója az IBAN-szerű szabályok szerint helyesnek tekinthető. Ha a számot leíró személy kihagyott volna egy számjegyet, felcserélte volna két számjegyet, vagy rosszul írt volna le egy számjegyet, a maradék általában nem lenne "1". Ilyen esetben a számítógépnek hibát kell észlelnie, és hibaüzenetet kell adnia.
Hogyan működik a mod 97 ellenőrzés (gyakorlatban)
A mod 97-ellenőrzés nagy számokra is alkalmazható anélkül, hogy egyszerre kellene a teljes, több tízjegyű számot kezelni. Az egyszerű, gyakorlati eljárás:
- Vegyük a teljes számot tetszőleges formában (például a 19 számjegyet + 2 ellenőrző számjegyet).
- Olvassuk be a szám elejétől annyi számjegyet, amennyit kényelmesen elbír a számolás (például 5–9 jegy), osszuk el 97-tel, és jegyezzük meg a maradékot.
- Fűzzük ehhez a maradékhoz a következő csoportot (újra számsorként), és ismételjük az osztást 97-tel; folytassuk, amíg az összes számjegyet feldolgoztuk.
- Az utolsó osztás maradéka adja meg azt az értéket, amelyet ellenőrizni kell (IBAN-szerű esetben érvényesnek tekintjük, ha a maradék 1).
Ez az eljárás lehetővé teszi, hogy nagy egész számokat egyszerűen, részenként dolgozzunk fel akár kézzel vagy kisméretű aritmetikát használó eszközön is.
Rövid összefoglaló a különböző módszerekről
- Egyszerű összeadás (egyösszeg): gyors és egyszerű, de gyenge — például nem vagy kevéssé képes felismerni a számjegyek felcserélődését.
- Hamming-kód: bináris kódolási eljárás, amely képes egyszernyi hibát javítani és több hibát kimutatni. Alkalmas adatátviteli csatornákon és memóriákban előforduló bithibák kezelésére.
- CRC (ciklikus redundanciaellenőrzés): polinomiális módszer, amely nagyon jó burst-hibadetektálási képességgel rendelkezik; sok hálózati protokollban és tárolórendszerben használják. A hatékonysága a választott generátorpolinomtól függ.
- Moduláris ellenőrző összegek (pl. mod 97): egyszerűen implementálhatók, jól működnek számsoroknál (bankazonosítók, számlaszámok), és gyakran detektálják a gyakori beírási hibákat.
Korlátok és további megfontolások
- Egyetlen ellenőrző összeg sem tökéletes: több hibát vagy célzott hamisítást előfordulhat, hogy nem észlel. Például a moduláris ellenőrzés sem garantálja, hogy minden lehetséges hibát felismer.
- Az ellenőrző összeg jól használható véletlen beírási hibák kiszűrésére, de nem helyettesíti a kriptográfiai aláírást vagy egyéb hitelesítési módszereket, ha a cél a szándékos hamisítás elleni védelem.
- A gyakorlatban gyakran kombinálnak több módszert (például formátumellenőrzés + modulos ellenőrzés + szerveroldali validáció), hogy növeljék a biztonságot és a megbízhatóságot.
Ellenőrző összegeket más területeken is használnak; például a számítógépes szoftverek sorozatszámai és különböző azonosítók is gyakran tartalmaznak ilyen ellenőrző számjegyeket.

Modern EAN vonalkód: A zöld színű részeket távtartóknak nevezik: Ezek választják el a számcsoportokat. Minden számot 7 bit kódol, a képen látható módon. Az első 11 számjegy tartalmazza a termékszámot. Az utolsó számjegy, ebben az esetben a "2", az ellenőrző összeg. Az ellenőrző összeg úgy adódik össze, hogy a páros pozíciók összege és a páratlanoké hárommal megszorozva, modulo 10-ben 0 legyen.
Kérdések és válaszok
K: Mi az az ellenőrző összeg?
V: Az ellenőrző összeg egy szám, amelyet redundanciaellenőrzésre használnak. Annak ellenőrzésére szolgál, hogy a szám felírása során nem történt-e hiba.
K: Hogyan számítják ki az ellenőrző összegeket?
V: Az ellenőrző összegeket különböző módon lehet kiszámítani, de a legegyszerűbb formában a számjegyeket egyszerűen összeadják. Ez azonban nem képes felismerni a számjegyek felcseréléséből adódó hibákat.
K: Mi a példa az ellenőrző összegek működésére?
V: A portugál bankszámla-azonosítók jó példa az ellenőrző összegek működésére. Ezek 21 számjegyből állnak, és az utolsó két számjegy a moduláris aritmetikán alapuló "mod 97" ellenőrző összeget jelenti.
K: Hogyan segít ez a hibák felismerésében?
V: Ha bármelyik számjegy kimarad, felcserélődik vagy helytelenül íródik, akkor a maradék nem lesz "1". Ebben az esetben a számítógépnek hibát kell észlelnie, és hibaüzenetet kell adnia.
K: Hol használják még az ellenőrző összegeket?
V: Az ellenőrző összegeket a számítógépes szoftverek sorozatszámainál is használják.
K: Mi történik, ha az ellenőrzőösszeg hibát észlel?
V: Ha az ellenőrzőösszeg hibát észlel, akkor a számítógépnek észlelnie kell azt, és hibaüzenetet kell kiadnia.
Keres