Empfaenger : FIDO/WISSEN.GER (All)
Absender : gelöscht
Betreff : Personalausweis
Datum : Mo 29.05.95, 17:04 (erhalten: 05.06.95)
Groesse : 3051 Bytes
----------------------------------------------------------------------
Hallo!
Da ja immer mehr fragen und sich die Diskussion (eher Spekulation) wie in der
CCC.GER entwickelt (da ist der Thread grad vorbei), hier ein Proggi dazu. Nach
dem Schaubild unten muss man zuerst wwwwNNNNN eingeben, dann spuckt das
Programm die Pruefzahl p aus. Das geht dann so weiter. Wer das nicht begreift
kann die Erklaerung unten mit einem Taschenrechner nachvollziehen ;-)
=== Cut ===
program Personalausweis (input,output);
{
Ziffernblocks auf dem Bundespersonalausweis:
============================================
wwwwNNNNNpD<<yyMMddX<YYmmDDx<<<<<<n
||||||||||| ||||||| ||||||| |
||||||||||| ||||||| ||||||| ~\__ Pruefsumme ALLER vorherigen Ziffern
||||||||||| ||||||| |||||||
||||||||||| ||||||| ||||||~\__ Pruefsumme Ablaufdatum
||||||||||| ||||||| ||||~~\__ Ablaufdatum Tag
||||||||||| ||||||| ||~~\__ Ablaufdatum Monat
||||||||||| ||||||| ~~\__ Ablaufdatum Jahr
||||||||||| |||||||
||||||||||| ||||||~\__ Pruefsumme Geb.-Datum
||||||||||| ||||~~\__ Geb.-Tag
||||||||||| ||~~\__ Geb.-Monat
||||||||||| ~~\__ Geb.-Jahr
|||||||||||
|||||||||| \__ Staatszugehoerigkeit D = Deutsch ?
||||||||| \__ Pruefsumme fuer wwwwNNNNN
||||~~~~~\__ laufende Zaehlnummer
~~~~\__ Erstwohnsitz Kennzahl
Berechnung der Pruefsumme:
==========================
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 fuenfte mit 3, etc...)
2)
Die so erhaltenen Zahlen werden alle zu einer Summe aufaddiert.
3)
Die Pruefsumme ist der Rest von der Summe nach einer Divison durch 10
(also Summe modulo 10).
}
const
Seriennummernlaenge = 24;
var
Seriennummer: String [SerienNummernlaenge];
FaktorSchluessel: String [SerienNummernlaenge];
Fehler: Boolean;
Pruefziffer: Byte;
procedure ErrechnePruefziffer;
var i, a, b, err, Summe: Integer;
begin
Summe := 0;
for i := 1 to SerienNummernLaenge do begin
val (SerienNummer[i],a,err);
If Err <> 0 then
begin
Writeln ('Fehler - keine Ziffer an Position ',i);
Fehler := True;
exit;
end;
val (FaktorSchluessel[i],b,err);
Summe := Summe + (a * b);
end;
PruefZiffer := Summe mod 10;
end;
begin
writeln ('BundesPersonalAusweisPruefziffernberechnung');
writeln ('original BASIC Source by Wau Holland, CCC, Hackerbibel II');
FaktorSchluessel := '731731731731731731731731';
SerienNummer := '000000000000000000000000';
Fehler := False;
Write ('Ausweisnummer (ohne Pruefziffer) >');
ReadLn (Seriennummer);
Writeln;
ErrechnePruefziffer;
if not Fehler
then Writeln ('Gefundene Pruefziffer ist: ', Pruefziffer)
end.
=== Cut ===
... Bleibe im Lande und wehre Dich taeglich
Willkürliche Links:
mit freundlicher Unterstützung von www.RUCKSACKSHOP.com