next up previous contents
Nächste Seite: XOR-Werte berechnen Aufwärts: Hash-Funktionen Vorherige Seite: WH - Ausgabe von   Inhalt

Die ISBN-Codierung

Die ISBN (textbfInternational Standard Book Number) ist jedem Buch eines jeden Verlages weltweit eindeutig zugeordnet. Damit soll das eindeutige und fehlerfreie Bestellen von Druckwerken sicher gestellt sein. Da eine fehlerhafte Eingabe in ein Bestellformular, bei telefonischer Bestellung oder einfach beim Aufschreiben auf jeden Fall vermieden werden muss, wird von den ersten 9 Ziffern eine Prüfsumme berechnet, die in der letzten Stelle angegeben wird. Der Empfänger einer ISBN kann dann sehr schnell nachprüfen, ob die Ziffern korrekt übermittelt wurden und ob die Reihenfolge korrekt ist.

Die ISBN besteht also aus vier Gruppen:

Für die Berechnung der Prüfziffer gilt: Die erste Stelle wird mit 10 multipliziert, die zweite mit 9, die dritte mit 8 .... die neunte Stelle mit 2. Gemeinsam mit der Prüfziffer muss die Gesamtsumme durch 11 teilbar sein.

Also: Prüfziffer = 11 - ganzzahliger Rest bei der Division der durch obiges Verfahren ermittelte Summe der ersten neun Ziffern durch 11.

Beispiele:

Gisbert W. Selke, ``Kryptographie'', Verlag O'Reilly - ISBN 3-89721-155-6: 30 + 72 + 72 + 49 + 12 + 5 + 4 + 15 + 10 = 269. Die Division durch 11 liefert mit dem Taschenrechner 24.454545... Um den Rest zu erhalten subtrahieren wir 24 und multiplizieren 0.454545... mit 11. Der Rest bei der Division durch 11 ist somit 5. Für die Prüfziffer folgt daher 11 - 5 = 6.

Moses ``Internet Guide für Schüler'', moses Kinderbuchverlag - ISBN 3-89777-013-X: 30 + 72 + 72 + 49 + 42 + 35 + 0 + 3 + 6 = 309. Dies liefert den Rest 1; die Prüfziffer lautet daher 10 (X).17

Wir überprüfen ISBNs im folgenden Beispiel (isbn.java):

import java.io.*;

public class isbn {
    public static void main (String [] eingabe) {
        String isbn = eingabe[0];
        int ergebnis=0;
        for (int i=0;i<isbn.length();i++) {
            int j = (int) (isbn.charAt(i)) - 48;
            ergebnis += ((j*(10-i)) % 11);
        }
        ergebnis = 11 - (ergebnis % 11);
        System.out.print("Die Prüfziffer von ISBN " + isbn + " lautet ");
        if (ergebnis == 10) System.out.println("X");
        else System.out.println (ergebnis);
    }
}

Damit erhalten wir beispielsweise die folgenden Ergebnisse:

alfred@newbie:~/java/krypto/hash > java isbn 389721155
Die Prüfziffer von ISBN 389721155 lautet 6
alfred@newbie:~/java/krypto/hash > java isbn 389777013
Die Prüfziffer von ISBN 389777013 lautet X

Beachte, dass es relativ einfach ist, aus den ersten 9 Ziffern der ISBN die Prüfziffer zu berechnen; es ist aber sehr schwierig, aus der Prüfziffer eindeutig auf die vollständige ISBN zurückzurechnen!


next up previous contents
Nächste Seite: XOR-Werte berechnen Aufwärts: Hash-Funktionen Vorherige Seite: WH - Ausgabe von   Inhalt
Alfred Nussbaumer 2003-02-10