lehrkraefte:blc:informatik:glf20:robotik:modernecrypto:hashes:pruefsummen

Prüfsummen

Oft ist die letzte Ziffer eines Zahlen-Codes eine Prüfsumme der vorhergehenden Ziffern. Damit kann z.B. festgestellt werden, wenn genau eine Ziffer falsch eingegeben wurde, oder die meisten Fälle von vertauschten Ziffern. In vielen Fällen wird eine «Art Quersumme» berechnet. Beispiele sind

  • IBAN (Kontonummern)
  • Kreditkartennummern
  • Referenznummern auf Einzahlungsscheinen
  • Bar-Codes (z.B. EAN-Codes im Supermarkt).
  • ISBN (Büchernummern)

Sie haben bestimmt ein Buch mit 13-stelliger ISBN-Nummer und/oder einen Artikel mit einem EAN-Code bei sich.

Überprüfen Sie für diese von Hand die Prüfsumme (letzte Ziffer). Finden Sie dazu eine Anleitung. Die Berechnungsmethode ist für beide gleich. Für 10-stellige ISBN-Nummern (vor dem Jahr 2006) ist die Prüfsummenberechnung eine andere.

Suchen Sie die Anleitung bitte selber!

Suchen Sie die Anleitung bitte selber!

Optinale Knacknuss

Folgender Code überprüft, ob ein EAN-Code eine korrekte Prüfziffer hat:

ean.py
# EAN-Code Überprüfen
 
code = "7613312143490"
 
if len(code)!=13:
    print("Falscher Code, er muss 13 Ziffern haben!")
    exit()  
 
 
summe = 0
for i in range(12):
    ziffer = int(code[i])  # Aktuelle Ziffer an Stelle i (von 0 bis 11)
    if i%2==0: 
        summe = summe + ziffer
    else:
        summe = summe + 3*ziffer
 
# Prüfziffer aus der Summe berechnen        
pruefziffer = (10 - summe%10) % 10   
 
if int(code[12]) == pruefziffer:
    print("Code ist OK!")
else:
    print("Code ist Fehlerhaft!")
 

Passen Sie obigen Code so an, dass 10-stellige ISBN-Nummern damit überprüft werden können (wobei es diese seit 2006 nicht mehr gibt).

Damit die Nummern einfacher eingeben werden können (mit Minuszeichen) können Sie folgendes verwenden:

isbn = "3-88229-192-3".replace("-","")   # Ersetzt alle Minuszeichen durch nichts, d.h. entfernt diese
print(isbn)          # Gibt 3882291923 aus
  • lehrkraefte/blc/informatik/glf20/robotik/modernecrypto/hashes/pruefsummen.txt
  • Last modified: 2021/06/04 11:31
  • by Ivo Blöchliger