Aufbau der Ausweisnummer deutscher Personalausweise

Dieses Dokument beschreibt den Aufbau der untersten Zeile deutscher Personalausweise.
 

Aufbau der einzelnen Blöcke

Hier eine anschauliche "Grafik":

 731731731    731731  731731
 *********    ******  ******
 wwwwNNNNNpD<<yyMMddX<YYmmDDx<<<<<<n
 |||||||||||  ||||||| |||||||      |
 |||||||||||  ||||||| |||||||      -\__ Prüfsumme ALLER Ziffern
 |||||||||||  ||||||| |||||||
 |||||||||||  ||||||| ||||||-\__ Prüfsumme Ablaufdatum
 |||||||||||  ||||||| ||||--\__ Ablaufdatum Tag
 |||||||||||  ||||||| ||--\__ Ablaufdatum Monat
 |||||||||||  ||||||| --\__ Ablaufdatum Jahr
 |||||||||||  |||||||
 |||||||||||  ||||||-\__ Prüfsumme Geb.-Datum
 |||||||||||  ||||--\__ Geb.-Tag
 |||||||||||  ||--\__ Geb.-Monat
 |||||||||||  --\__ Geb.-Jahr
 |||||||||||
 |||||||||| \__ Staatszugehoerigkeit D = Deutsch ?
 ||||||||| \__ Prüfsumme fuer wwwwNNNNN
 ||||-----\__ laufende Zaehl
 ----_Erstwohnsitz Kennzahl

Berechnung der Prüfsumme

1) Die erste  Ziffer wird mit 7 multipliziert,
   die zweite Ziffer wird mit 3 multipliziert,
   die dritte Ziffer wird mit 1 multipliziert,
   und so weiter (die vierte wieder mit 7, die fünfte mit 3...)

2) Die so erhaltenen Zahlen werden alle zu einer Summe aufaddiert.

3) Die Prüfsumme ist die Einerstelle der Summe (also Summe modulo 10)

Beispiel einer Prüfsummen Überprüfung

Angenommen wir haben folgende Kennnummer:

1234123457D<<8409207<0509190<<<<<<<2

||||||||||
||||||||| \__ Prüfsumme der 9 Ziffern
---------\__ diesen 9-Ziffern Block wollen wir überprüfen
 

Wir berechnen folgendes:
1 * 7 =  7
2 * 3 =  6
3 * 1 =  3
4 * 7 = 28
1 * 3 =  3
2 * 1 =  2
3 * 7 = 21
4 * 3 = 12
5 * 1 =  5
        --
 Summe: 87
 Summe Modulo 10: 7 ( 87 MOD 10)

Wie man sieht, stimmt die errechnete Prüfsumme mit der festgelegten überein (7==7).
 
 

Hinweise

C Implementierung

Diese ganzen, sich oft wiederholenden, Berechnungen lassen sich mit meinem C-Programm schnell machen und hoffentlich nachvollziehen.
Der Quellcode lässt sich unter anderem bei mir herunterladen:

Quellenangaben:

Die technischen Informationen sind teilweise zitiert aus einen Usenet-Artikel von Willi Marquart entnommen:
Subject: Re: Codierung des Personalsausweises
Newsgroups: de.org.ccc
Date: 1999/08/24

Last changes: Mon Aug 20 2001
Contact: Tilo Ulbrich <TiloUlbrich@web.de>
Information: http://cgi-bin.spaceports.com/~chrisn/programmierung-perso.php3