2022. május 07. 09:57 - Gazz

Giro bankszámlaszám ellenőrzésének HELYES algoritmusa

Ez egy rövid, de hasznos bejegyzés lesz, amit indulatból írtam, mert alaposan felhúztam magam.

Kell készítenem egy beadandó házi feladatot, aminek a része az, hogy bankszámlaszámot kell a rendszernek fogadnia, amit ellenőrizni kell, hogy formailag helyes-e.

Az ember ilyenkor rákeres a google-ban az algoritmusra.

1. tapasztalat: Hivatalos helyről semmilyen információ nincs, hogy hogyan kell ezt csinálni.

2. tapasztalat: Félhivatalos helyeken - a témával foglalkozó magánszemélyek oldalain - van algoritmus, de hibás.

Nézzük mit írnak ez utóbbiak. Szerintük a következő az eljárás:

A Giro bankszámlaszám 24 karakteres, csak számokból áll. Ezt 3 db 8 karakteres részre kell szétdarabolni, és mindegyikre le kell futtatni a következő algoritmust.

A nyolcas karaktersor első karakterhelyén álló számot 9-cel,

a második karakterhelyén álló számot 7-tel,

a harmadik karakterhelyen álló számot 3-mal,

a negyedik karatkerhelyen álló számot 1-gyel,

az ötödik karakterhelyen álló számot 9-cel,

a hatodik karakterhelyen álló számot 7-tel,

a hetedik karakterhelyen álló számot 3-mal,

a nyolcadik karakterhelyen álló számot 1-gyel szorozzuk be,

majd a szorzatokat összeadjuk. Az összegnek tíz egész számú többszörösének kell lenni, akkor érvényes a számlaszám.

Az algoritmus HIBÁS!!!

Csak az első nyolc karakterre működik! Illetve OTP esetén a második nyolcra is, de ennek csak az az oka, hogy az OTP esetében a harmadik 8 karakter csupa nulla.

Ezzel szemben a valódi algoritmus az, hogy a fenti metódussal leellenőrizzük az első nyolc számjegyet, és ha az rendben van, akkor a második és harmadik nyolc számjegyre is kiszámoljuk a fenti összeget, de ennek nem külön kell nullának lennie a második 8 számjegyre, és a harmadik nyolc számjegyre, hanem a második és harmadik nyolcas vizsgálata során kapott összegeket össze kell adni, és annak kell 10-el oszthatónak lennie. Magyarán az algoritmust az első nyolc, majd az utána következő 16 számjegyre kell futtatni. Ezek alapján könnyű belátni, hogy az OTP-nél miért működik a második 8 számjegyre is önmagában.

Remélem sok ember hasznosnak találja ezt a bejegyzést, és nem fog órákat eltölteni azzal, hogy ott keresi a hibát, ahol nincs, csak mert bedőlt a neten talált félinformációknak.

2 komment

A bejegyzés trackback címe:

https://gazz.blog.hu/api/trackback/id/tr5817825989

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Online Távmunkás · http://onlinetavmunka.blog.hu 2022.05.07. 11:43:39

Itt a hivatalos forrás a belföldi (GIRO) és a nemzetközi (IBAN) bankszámlaszámok formátumához: 1. melléklet a 35/2017. (XII. 14.) MNB rendelethez
net.jogtar.hu/jogszabaly?docid=a1700035.mnb
süti beállítások módosítása