16
International Bank A ccount Number Mario Spengler, Januar 2014, gymHerm gymHerm 101 Jahre Festvortrag

International Bank Account Number - mspengler.de · Seite !2 MSP Was ist eine IBAN ?! Wozu eine IBAN ?! national international! Fehlervermeidung! Wie erstellt man eine IBAN ?! Aufbau!

Embed Size (px)

Citation preview

International Bank Account Number

Mario Spengler, Januar 2014, gymHerm

gymHerm 101 Jahre

Festvortrag

���2Seite MSP

Was ist eine IBAN ? Wozu eine IBAN ?

national ➞ international Fehlervermeidung

Wie erstellt man eine IBAN ? Aufbau Prüfzahl

Wie kann man die Prüfzahl berechnen ? Divisionsalgorithmus Tabellenkalkulation Taschenrechner Python

Warum korrekte IBANs stets eine „1’’ melden

InhalteNun bin ich

bereits zum 5. Mal

am gymHerm

���3Seite MSP

Prüfzahlen kommen in der Informatik häufig vor ISBN International Standard Book Number Seriennummer bei Euroscheinen Steuernummer Personalausweisnummer Prüfbit bei der Datenfernübertragung IBAN International Bank Account Number

ganz aktuell: im Euro-Zahlungsverkehrsraum SEPA (Single Euro Payments Area) sollen bis zum 1. Februar 2014 die nationalen Zahlungssysteme vollständig ersetzen werden.

���4Seite MSP

Was ist eine IBAN ?

vorher nachher

DRK DRK

Bankleitzahl 37020500 BIC BFSWDE33XXX

Kontonummer 414141 IBAN DE37370205000000414141

Kontonummer, 10 Bankleitzahl, 8 Prüfziffern, 2 Länderkennung, 2

BankKürzel, 4 Länderkennung 2 Ortscode, 2 FilialCode, 3

Bank für Sozialwirtschaft

Bank Identifier Code

!!!

International Bank Account Number

SWIFT ( Society for Worldwide Interbank Financial Telecommunication )

vergibt weltweit für jede Bank einen eindeutigen BIC,

die IBAN wird berechnet !Problem !

BIC entfällt ab dem 1. Februar 2014 BIC, im Ausland ab 2016

Spendenkonto

���5Seite MSP

Wozu eine IBAN ? national ➞ international

Beispiele!!Deutschland: BLZ 12345678! Kto 0123456789!!Österreich: BLZ 12345! Kto 00123456789!!Luxemburg: BLZ 123! Kto 9400644750000!!Frankreich: BLZ 2004101005! Kto 0500013M02606!!Malta: BLZ MALT01100! Kto 0012345MTLCAST001S!!

• Länge der Bankleitzahl !• Länge der Kontonummer !• Buchstaben !• Ziffern

Europa soll einfacher werden !

���6Seite MSP

Wozu eine IBAN ? Fehlervermeidung

Um bei der Übermittlung von • Länderkennung • Bankleitzahl • Kontonummer Fehler zu vermeiden wie • fehlende Ziffern • doppelte Ziffern • vertauschte Ziffern wurde eine Prüfzahl in die IBAN eingebaut.Problem :

Buchstaben in der IBAN

DE 10070848 0123456789 !!!!58

Dividiert man die IBAN durch 97, so muss sich bei korrekter Übermittlung der Rest 1 ergeben. !Ergibt sich ein anderer Rest wie 0, 2, 3, 4, 5, ……………….…, 94, 95 96, so wird die Transaktion (Geldüberweisung) abgebrochen.

���7Seite MSP

Wie erstellt man eine IBAN ? Aufbau

In Deutschland ganz einfach, man nehme in der richtigen Reihenfolge !• die 2-stellige Länderkennung • die 2-stellige Prüfzahl • die 8-stellige Bankleitzahl • die 10-stellige Kontonummer !und schreibe die Daten nebeneinander.

DE89370400440532013000

DE!89!37040044!0532013000

Problem : Berechnung der Prüfzahl

���8Seite MSP

Wie erstellt man eine IBAN ? Aufbau

In anderen Ländern fast genauso einfach, man nehme !• die 2-stellige Länderkennung • die 2-stellige Prüfzahl • die 2-8-stellige Bankleitzahl • den 0-3-stelligen KontoTyp • die 0-6-stellige FilialNummer • den 0-8-stelligen RegionalCode !• die 6-21—stellige Kontonummer • die 0-2-stellige nationale Prüfzahl !und schreibe die Zahlen nebeneinander.

Problem : Berechnung der Prüfzahl

aus Ziffern und Buchstaben

Belgien!BE!62!510! ! ! ! !007547!61

BE62510007547061

FR1420041010050500013M02606

Frankreich!FR!14!20041! !01005! !!0500013M02606

Niederlande!NL!39!RABO! !! !!0300065264

NL39RABO0300065264

Europa soll einfacher werden !

���9Seite MSP

Wie erstellt man eine IBAN ? Prüfzahl

Reihenfolge umstellen und Buchstaben nach Tabelle in Zahlen umwandeln !• nationale Bankdaten • Länderkennung • vorläufige Prüfzahl 00 !

DE89370400440532013000 370400440532013000131400

NL39RABO0300065264 271011240300065264232100

FR1420041010050500013M02606 200410100505000132202606152700

Die so erzeugten Zahlen werden durch 97 dividiert. Die Prüfzahl ergibt sich, indem man den Rest von 98 subtrahiert. Einstelligen Prüfzahlen wird eine Null vorangestellt.

Prüfzahl = 98 - IBAN mod 97

���10Seite MSP

Wie kann man die Prüfzahl berechnen ? DivisionsalgorithmusPrüfzahl = 98 - IBAN mod 97

370400440532013000131400 = 97·3818561242598072166303 + 9!-291 ! 794! -776! 180! -97! 830! -776! 544! -485! 594! -582! 120! -097! 235! -194! 413

413!-388! 252! -194! 580! -485! 951! -873! 783! -776! 070! -000! 700! -679! 210

210!-194! 161! -097! 643! -582! 611! -582! 294! -291! 030! -000! 300! -291! 09!

Prüfzahl = 98 - 9 = 89 370400440532013000131400 = 97·

���11Seite MSP

Wie kann man die Prüfzahl berechnen ? Tabellenkalkulation

Prüfzahl = 98 - IBAN mod 97

= REST(594; 97) = 12

���12Seite MSP

Wie kann man die Prüfzahl berechnen ? Tabellenkalkulation oder Taschenrechner

Einteilung der aufbereiteten IBAN in 6-er GruppenPrüfzahl = 98 - IBAN mod 97

���13Seite MSP

Wie kann man die Prüfzahl berechnen ? PythonIn der Programmiersprache Python können ganze Zahlen beliebige Längen haben. !• InterpreterVersion: Ausführung direkt nach der Eingabe !!!!• Compilerversion: Quelltest zuerst übersetzen, dann ausführen

>>> print 98 - 370400440532013000131400 % 97!89!>>> !!

���14Seite MSP

Wie kann man die Prüfzahl berechnen ? Python• Compilerversion: Quelltest zuerst übersetzen, dann ausführendef main():!... print !... blz = input("BLZ = ")!... kto = input("KTO = ")!... lnd = 131400!... bak = blz*10000000000 + kto!... ban = bak*1000000 + lnd!... prf = 98 - ban % 97!... print!... print "PRF = ", prf!... print!... print "IBAN = ", "DE", prf, bak !!!!!!>>> main()!

BLZ = 37040044!KTO = 532013000!!PRF = 89!!IBAN = DE 89 370400440532013000!

���15Seite MSP

Warum korrekte IBANs stets eine „1’’ meldenDividiert man die IBAN durch 97, so muss sich bei korrekter Übermittlung der Rest 1 ergeben. !Ergibt sich ein anderer Rest wie 0, 2, 3, 4, 5, ……………….…, 94, 95 96, so wird die Transaktion (Geldüberweisung) abgebrochen.

DE89370400440532013000 ! Python:! Original >>> 370400440532013000131489 % 97 >>> 1 ! ⬇⬇ Zifferntausch!>>> 370400440352013000131489 % 97 >>> 22 ! ⬇⬇ 0 zu wenig!>>> 37040044053201300131489 % 97 >>> 39 ! ⬇⬇ 0 zu viel!>>> 3704004405320130000131489 % 97 >>> 9

>>> 370400440532013000131489 % 97 >>> 1L!>>> 370400440532013000131489 % 97 >>> 1L!

Da fehlt nur noch der Beweis !

Warum

���16Seite MSP

Warum korrekte IBANs stets eine „1’’ melden

BankZahl = BLZKTOLK00 = n·97 + RestPrüfZahl = = 98 BZ + PZ = = n·97 + 98

= n·97 + 97IBAN = = (n+1) · 97 + 1

umgestellte IBAN mod 97 = 1

DE89370400440532013000 IBANBZ=370400440532013000131400 PZ = 98 - BZ mod 97

370400440532013000131489 umgestellte IBAN