Kann man ahnand der Ausweisnummer auf dem Perso die Identität einer Person feststellen oder geht das mit der Ausweisnummer allein nicht?
1
Wer ist "man"?! Jemand der in keiner Behörde arbeitet kann das sicherlich nicht^^
Einfach mal selbst googeln, der 1. Eintrag gibt die bereits die Antwort!
"Die Ausweisnummer ist eine eindeutige Nummer zur Identifikation eines Ausweises zu einer Person. Sie wird zum Beispiel als fortlaufende Nummer auf den deutschen Personalausweis gedruckt. Die ersten vier Ziffern dieser Kennziffer stehen für die Behördenkennzahl (BKZ), gefolgt von der fünfstelligen Ausweisnummer, einer Prüfziffer und einem ‚D‘ für die Staatsangehörigkeit. Nach zwei Leerzeichen folgen nun Geburtsdatum und Prüfziffer, ein Leerzeichen und das Ablaufdatum des Personalausweises, wiederum eine Prüfziffer und nach sieben weiteren Leerzeichen eine Prüfziffer aus allen Ziffern."
2
Grundsätzlich können nur Behörden jemanden anhand der Ausweisnummer identifizieren. Privatpersonen können das natürlich nicht. Aber für Behörden reicht die Nummer. Die bräuchten die anderen Daten nicht. Die Nummer ist einzigartig und deswegen ein eindeutiges Identifikationsmerkmal (Quelle: //ausweisnummer.org )
Top Diskussionen anzeigen
<?php
//Pruefnummer ueberpruefen
functioncheck_number($id,$checknumber){
$p=7;
$sum=0;
for($i=0;$i<strlen($id);$i++){
$char=$id{$i};
if($char>='0'&&$char<='9')
$int=intval($char);
else
$int =ord($char)-55;
$sum+=$int*$p;
if($p==1)
$p=7;
elseif($p==3)
$p=1;
elseif($p==7)
$p=3;
}
$last_number =substr(strval($sum),-1);
return$last_number==$checknumber;
}
//Gibt die Art (neu vs. alt) des Personalausweis zurück
function perso_type($id){
$splits=explode(" ",strtoupper($id));
if(strlen($splits[0])==11&&strlen($splits[1])==7&& strlen($splits[2])==7&&strlen($splits[3])==1){
return 'old';
}elseif(strlen($splits[0])==10&&strlen($splits[1]) ==7&&strlen($splits[2])==8&&strlen($splits[3])==1) {
return'new';
}else{
return'unknown';
}
}
//Sind die Prüfziffern gültig
function perso_checksum($id){
$splits=explode(" ",strtoupper($id));
$checksums=array();
$perso_type=perso_type($id);
if($perso_type=='unknown'){
returnfalse;
}
$checksums[]=array(substr($splits[0],0,9), substr($splits[0],9,1));
$checksums[]= array(substr($splits[1],0,6),substr($splits[1],6,1));
$checksums[]=array(substr($splits[2],0,6), substr($splits[2],6,1));
$checksums[]= array(substr($splits[0],0,10).substr($splits[1],0,7).substr($splits[2],0,7), $splits[3]);
//Überprüfung der Checksummen
foreach($checksumsas$checksum){
if(!check_number($checksum[0],$checksum[1])){
returnfalse;
}
}
returntrue;
}
//Ist der Perso noch gültig?
functionperso_gueltig($id){
$splits=explode(" ",$id);
$valid_until=mktime(0,0,0,substr($splits[2],2,2), substr($splits[2],4,2),"20".substr($splits[2],0,2));
//Ist der Perso noch gültig
if(time()>$valid_until)
returnfalse;
returntrue;
}
//Informationen aus dem Perso beziehen
functionperso_info($id){
$splits=explode(" ",$id);
//$return: Ein Objekt mit den Daten aus der Ausweisnummer
$return=newstdClass();
$return->perso_type=perso_type($id);
$return->geb= newstdClass();
$return->geb->tag=$splits[1]{4}.$splits[1]{5}; //Geburtstag
$return->geb->monat=$splits[1]{2}.$splits[1]{3};//Geburtsmonat
$return->geb->jahr=$splits[1]{0}.$splits[1]{1};//Geburtsjahr
if($return->geb->jahr>intval(date("y"))){
$return->geb->jahr= "19".$return->geb->jahr;
}else{
$return->geb->jahr="20".$return->geb->jahr;
}
$alter=date("Y")-$return->geb->jahr;
//Hatte er schon Geburtstag?
if( (date("n")<$return->geb->monat)OR(date("n")==$return->geb->monat AND date("j")<$return->geb->tag)){
$alter--;
}
$return->alter= $alter;
if($alter>=18){
$return->volljaehrig=true;
}else {
$return->volljaehrig=false;
}
$return->ablauf=newstdClass();
$return->ablauf->tag=$splits[2]{4}.$splits[2]{5};//Ausweis Ablauf Tag
$return->ablauf->monat=$splits[2]{2}.$splits[2]{3};//Ausweis Ablauf Monat
$return->ablauf->jahr="20".$splits[2]{0}.$splits[2]{1};//Ausweis Ablauf Jahr
if($return->perso_type=='old'){
$return->herkunft=$splits[0]{10};
} else{
$return->herkunft=$splits[2]{7};
}
//Ein Deutscher?
if(strtolower($return->herkunft)=="d"){
$return->deutscher=true;
} else{
$return->deutscher=false;
}
//Behördenkennzahl als Nummer
$return->behoerdenkennzahl= substr($splits[0],0,4);
return$return;
}
//Beispiel zur Verwendung
if(isset($_GET['check'])) {
$perso_id=$_POST['ida']." ".$_POST['idb']." ".$_POST['idc']." ".$_POST['idd'];
//Oder:
//$perso_id = "1234567891D 2345678 9012345 6"
if(perso_checksum($perso_id)){
echo "Personalausweisnummer korrekt!";
if(!perso_gueltig($perso_id)){
echo"<br> <b>Perso ist abgelaufen!</b>";
}
echo "<br><br> Daten der Ausweisnummer: <pre>";
$data=perso_info($perso_id);
print_r($data);
echo "</pre>";
//Zugriff z.B. so:
//Alter: $data->alter;
//Geburtsmonat: $data->geb->monat;
//Ablauftag: $data->ablauf->tag;
} else{
echo"Personalausweisnummer falsch!<br><br>";
}
}
?>
<!--Kleines Anwendungsbeispiel-->
Neuer Personalausweis:<br>
<form action="?check=1"method="post">
IDD<<<input type="text"size="10"maxlength="10"name="ida"><<<<<<<<<<<<<<<<<br>
<input type="text"size="7"maxlength="7"name="idb"><<input type="text" size="8"maxlength="8"name="idc"><<<<<<<<<<<input type="text"size="1"maxlength="1"name="idd"><br>
<input type="submit"value="überprüfen">
</form>
<br><hr><br>
Alter Personalausweis:<br>
<form action="?check=1" method="post">
<input type="text"size="11"maxlength="11"name="ida"><<
<input type="text"size="7"maxlength="7"name="idb"><
<input type="text"size="7" maxlength="7"name="idc"><<<<<
<input type="text" size="1"maxlength="1"name="idd"><br>
<input type="submit"value="überprüfen">
</form>