| Erfahrener Benutzer
Registriert seit: 11.12.2009
Beiträge: 117
PHP-Kenntnisse: Fortgeschritten
| Codieren von Texten Ryu's Coder Was macht das Script?
Das Skript verwandelt einen String mittels eines Key's in einen Zahlencode. Was nützt das?
Man kann damit z.B. Passwörter, die in einer Datei abgelegt werden, schützen. Nur mit dem passenden Schlüssel erhält man auch den ursprünglichen Text wieder. Wie sieht das ganze aus und wie funktioniert das?
Um die Umwandlung zu starten, werden 3 Parameter gebraucht: Der zu codierende Text, der Schlüssen und eine Buchstabenliste. Ich habe euch bereits eine Liste eingefügt, die eigendlich fast alle Symbole die man eingeben kann, enthält: PHP-Code: $alphabet = array("0","1","2","3","4","5","6","7","8","9",
"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","ä","ö","ü",
"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","Ä","Ö","Ü",
"!","§","$","%","&","/","(",")","=","?","{","[","]","}","\\",".","-","_","#","+","*","~",":","@","²","³"
);
Wichtig ist, das die Zeichenliste, mit der man den Text encodiert hat, nicht verändert werden darf, damit die decodierung klappt.
Um nun mal zu zeigen, wie das Ganze aussieht, habe ich einmal den Text "Test" (ohne Anführungszeichen) encodiert: Zitat:
mit Schlüssel 12345
76560:18480:36960:38280
mit Schlüssel 546846541698
127003852800:30656102400:61312204800:63501926400
usw.
| Wenn ihr das Script einbindet, dann könnt ihr es wiefolgt aufrufen:  encode($text, $key, $alphabet);  decode($codiert, $key, $alphabet);  Wichtig ist außerdem, das ihr als Schlüssel nur Zahlen nicht mehr als 14 Zeichen verwenden dürft, weil PHP sonst Schwierigkeiten mit der Berechnung hat und 0:0:0:0... rauskommt  Es gilt außerdem zu beachten, das bei der Berechnung keine zu Großen Zahlen herauskommen, weil PHP dann sowas wie 1.3268539623877E+15:3.2027509436945E+14:6.40550188 73891E+14:6.6342698119387E+14 liefert und das dementsprechend nicht weiterverarbeitet werden kann. Also ist z.B. 99999999999999 als Schlüssel untauglich, obwohl es noch unter 15 Zeichen hat.  Das Script muss außerdem in ISO 8859-2 formatiert sein, um die Funktionalität von Umlauten zu gewähren.
Und zuguter Letzt das Script: PHP-Code: <?php
$alphabet = array("0","1","2","3","4","5","6","7","8","9",
"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","ä","ö","ü",
"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","Ä","Ö","Ü",
"!","§","$","%","&","/","(",")","=","?","{","[","]","}","\\",".","-","_","#","+","*","~",":","@","²","³"
);
function encode($uc, $code, $alphabet)
{
$uc = htmlentities($uc);
$uc = str_replace("Ä", "Ä", $uc);
$uc = str_replace("ä", "ä", $uc);
$uc = str_replace("Ö", "Ö", $uc);
$uc = str_replace("ö", "ö", $uc);
$uc = str_replace("Ü", "Ü", $uc);
$uc = str_replace("ü", "ü", $uc);
$uc = str_split($uc);
$code = str_split($code);
$ergebnis = array();
foreach($uc AS $bst)
{
//ZIFFER DES BUCHSTABEN ERMITTELN
$s_bst = array_search($bst, $alphabet);
if($s_bst == FALSE)
{
$s_bst = "error";
return $s_bst;
}
// WENN ERMITTELT, CODIEREN
foreach($code AS $multipl)
{
// FALLS 0 ODER 1 EINGEGEBEN WURDE, WERDEN SIE ERSETZT, WEIL DAS KEINE
// STARKEN SCHLÜSSEL SIND
if($multipl == '0')
{
$multipl = 10;
}
elseif($multipl == '1')
{
$multipl = 11;
}
//DIE VERSCHLÜSSELUNG
$s_bst = $s_bst * $multipl;
}
$ergebnis[] = $s_bst;
}
$codiert = implode(":", $ergebnis);
return $codiert;
}
// DECODIEREN
function decode($c, $code, $alphabet)
{
$code = str_split($code);
$code = array_reverse($code);
$c = explode(":", $c);
$ergebnis = array();
foreach($c AS $coded)
{
foreach($code AS $dekrypt_c)
{
if($dekrypt_c == 0)
{
$dekrypt_c = 10;
}
elseif($dekrypt_c == 1)
{
$dekrypt_c = 11;
}
$coded = $coded / $dekrypt_c;
}
$ergebnis[] = $coded;
}
// Zahlencode in Buchstaben umwandeln
$umw_c = 0;
foreach($ergebnis AS $dec_int)
{
$ergebnis[$umw_c] = $alphabet[$dec_int];
$umw_c++;
}
$decodiert = implode("", $ergebnis);
return $decodiert;
}
?> MfG Ryu |