Java: IBAN berechnen

Wir schreiben das Jahr 2014 und das Thema SEPA(Single Euro Payments Area) ist noch lange nicht vorbei. Im Vordergrund steht dabei die Umwandlung der alten Bankleitzahl und Kontonummer in das neue Format IBAN.
Bitte nicht wundern, aber einige Unternehmen nutzen dafür kostenlose bzw. werbefinanzierte Webapps. Was mit den Kundendaten passiert, weiß da leider Keiner und der Datenschutz ist defakto nicht gewährleistet. Aber muss das sein?
Die Antwort lautet ganz klar NEIN und der Grundalgorithmus ist in 40 Zeilen programmiert. In diesem Beitrag geht es um den Standardweg eine IBAN zuberechnen.

 

Grundwissen

In Deutschland besteht die IBAN aus insgesamt 22 Buchstaben und Ziffern. Die Bestandteile der deutschen IBAN sind:

  • ein zweistelliges Länderkennzeichen (DE für Deutschland)
  • eine zweistellige Prüfziffer (für die so genannte Plausibilitätsprüfung)
  • die achtstellige Bankleitzahl
  • die zehnstellige Kontonummer

1660421_1230139803681080_2215447791672159445_n

 

Beispiel

DE 10 10090044 0532013018
Besteht die Prüfziffer oder die Kontonummer aus weniger Zahlen, werden die fehlenden Stellen am ANFANG mit Nullen aufgefüllt!!!

 

Berechnung der Prüfziffer

Länderkennzeichen, Bankleitzahl und Kontonummer sind klar, einzig die Prüfziffer muss berechnet werden. Allgemein sieht der Algorithmus so aus:

  1. Zur Berechnung werden zuerst die ersten vier Stellen (Länderkennzeichen+ Prüfziffer) ans Ende gestellt. Da die Prüfziffer noch nicht bekannt ist, wird stattdessen „00“ angenommen. Kürzere als 10-stellige Kontonummern werden linksbündig auf 10 Stellen mit Nullen aufgefüllt.
  2. Alle Leerzeichen werden aus der Nummernfolge entfernt. Alle Buchstaben werden durch die Zahl, die ihre Position im (lateinischen) Alphabet repräsentiert, „+ 9“ ersetzt (z. B. A = 10, B = 11, usw., Z = 35).
  3. Der Rest wird durch Teilen der (bei deutschen Konten 24 Stellen langen) Zahl durch „97“ berechnet („Modulo 97“).
  4. Das Ergebnis wird von „98“ abgezogen.
  5. Ist das Ergebnis kleiner als zehn, wird eine führende Null hinzugefügt.

Verstanden? Ich nicht, daher kommt hier der Algorithmus in Java programmiert:-)

 

	public String convertKnrBlzToIBAN(String knr, String blz){
	
		// zehnstellige Kontonummer	
		if(knr.length() < 10){
			int anz = 10 - knr.length();
			for (int i = 0; i < anz; i++) {
				knr = "0" + knr; 				
			}
		}
		
		// Pruefziffer
		// die 1314 steht fuer DE und die 00 fuer die fehlenden Prueffziffern
		String checkIBAN = blz + knr + "131400";

		// String in eine Zahl konvertieren
		BigInteger checkIBANSum;
		try {
			checkIBANSum = new BigInteger(checkIBAN);
		} catch (Exception e) {
			// TODO:FEHLER RICHTIG behandeln!!!!
			return "Fehler";
		}

		// Modulo rechnen 
		BigInteger faktor = new BigInteger("97");
		long div = checkIBANSum.remainder(faktor).longValue();
		// Differenz zu 98
		long pZiffer = 98 - div;
		
		// IBAN Regeln einhalten (22 Stellen)
		String IBAN = "";
		if(pZiffer < 10){
			IBAN = "DE0" + pZiffer + blz + knr;
		}else{
			IBAN = "DE" + pZiffer + blz + knr;
		}
		
		return IBAN;
	}

 

Sonderfälle

Die Realität lehrt uns täglich, dass das Leben nur aus Sonderfällen besteht. So ist es auch bei IBAN-Nummern;-) Der Algorithmus funktioniert nur nach den Standardregeln!!!

Deutsche Bank, Commerzbank und co haben teilweise ihre eignen Regeln definiert und vergeben teilweise andere Bankleitzahlen. Bei meinen Tests, mit diesem Algorithmus, hatte ich eine Fehlerquote von ca. 10%. Mit etwas mehr Aufwand (1/2 Tag), kann man die Fehlerquote auf 3% drücken. Für 0,4% brauchte ich schon eine Woche…
Wer mehr Informationen brauch findet diese auf den Seiten der deutschen Bundesbank:
Logo

 

Bankleitzahlen und BIC

Wer auch immer eine Bankleitzahl zu einer BIC transformieren muss oder will – kann auf eine Bankleitzahlendatei der deutschen Bundesbank zurückgreifen. Hier ist Link…
Der Algorithmus sollte klar sein:)

 

Quellen und weitere Links

 

Copyright © 2014 AxxG – Alexander Gräsel




6 Antworten : “Java: IBAN berechnen”

  1. Andreas sagt:

    Sehr cool! Bin auch gerade daran für http://ibanberechnen.de einen Rechner zu basteln

  2. Parfum4men sagt:

    Danke für den Beitrag, ich suche noch immer nach einer eleganten Lösung für Javascript um eine IBAN zu errechnen, falls der Kunde noch immer nur Kontonummer und Bankleitzahl hat. Aber das hier hat mir schon sehr geholfen.

  3. Bankcoder;-) sagt:

    Hallo, wie kann man aber aus einer Prüfziffer mögliche Kontonummern errechnen ?

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.