2014. május 15., csütörtök

IBAN szám generálás és ellenőrzés

Az IBAN szám országonként eltérő méretű, de maximum 34 karakterből állhat. Magyarországon a hossza 28 karakter.

Az első két karakter az ISO 3166 szabvány szerint az országot azonosítja (Magyarország esetében ez HU), a következő két karakter ellenőrző karakter, aminek a célja az, hogy könnyen észrevehető legyen, ha a bankszámlaszámot elgépeltük, ezt pedig az adott országban érvényes bankszámlaszám követi.

Az ellenőrzőszámot a következőképpen kell kiszámítani:
  • képezzünk a bankszámlaszámból egy mesterséges IBAN-t, ahol az ellenőrzőszám helyén 00 áll
  • töröljünk minden olyan karaktert, ami nem szám vagy betű (tehát szóközt, kötőjelet) - ez az úgynevezett BBAN
  • az első négy karaktert rakjuk a szám végére (tehát magyar bankszámlaszám esetén most ott tartunk, hogy "[bankszámlaszám]HU00"
  • a betűket alakítsuk számjeggyé az alábbiak alapján: A=10, B=11, C=12, D=13, E=14, F=15, G=16, H=17, I=18, J=19, K=20, L=21, M=22, N=23, O=24, P=25, Q=26, R=27, S=28, T=29, U=30, V=31, W=32, X=33
  • alkalmazzuk az ISO7064 által leírt MOD 97-10 módszert
A MOD 97-10:
  • balról haladva fogjuk az első 9 számot (jelöljük ezt N-el, az eredeti számot pedig E-vel)
  • számoljuk ki N mod 97-et (azaz osszuk el 97-el, és nézzük meg, hogy mennyi a maradék)
  • ha az eredmény kisebb, mint 10, az elejére helyezzünk egy 0-t
  • képezzünk egy új számot, ami a fenti eredményből, és az eredeti szám következő 7 karakteréből áll (ha kevesebb mint 7 karakter maradt, akkor rövidebb lesz az új számunk), legyen ez az új N-ünk
  • folytassuk a második lépéstől mindaddig, amíg fel nem használtuk az eredeti szám (E) összes számjegyét
  • az eredményt vonjuk ki 98-ból, és ez lesz az ellenőrző számunk
Ha az ellenőrző számot ellenőrizni szeretnénk, az utolsó lépés helyett a MOD 97-10-ben kapott utolsó eredményt hasonlítsuk össze E mod 97-el - ha az eredmény egyezik, akkor a bankszámlaszám helyes.