Hallo,
ich habe nen script gepastelt das einen Text durch ein Passwort codiert, aber leider nicht wieder de! Da kommt nähmlich immer nen Fehler, look:
"Hallo" wird zu "8G5" und das wird zurück gecodet zu "Y@552"
Ich weiß nicht wo mein Fehler ist:
Codier funktion:
function mdm1($pass,$text) {
// Umwandlungskette
$zeichen="!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ";
$zeichenlaenge = strlen($zeichen);
//Passwort als Stelle ausgeben
$passlaenge = strlen($pass);
for ($i=0;$i<=$passlaenge-1;$i++) {
$passzeichen[$i] = strcspn($zeichen,$pass[$i]);
}
//Quersumme des Passwortes
$passzeichen_implode = implode("",$passzeichen);
settype($passzeichen_implode, "STRING"
$null = 0;
for($i=0; $i<strlen($passzeichen_implode); $i++)
{
$null = $null + $passzeichen_implode[$i];
}
//Text um Stellen verschieben.
$textlaenge = strlen($text);
for ($i=0;$i<=$textlaenge;$i++) {
$textzeichen[$i] = strcspn($zeichen,$text[$i]);
//
$zeichen_ersetzungs_stelle = $textzeichen[$i]+$passzeichen[$i]+$null;
//
if ($zeichen_ersetzungs_stelle>=$zeichenlaenge) {
$zeichen_neu_stelle[$i] = $zeichen_ersetzungs_stelle-$zeichenlaenge;
}
else {
$zeichen_neu_stelle[$i] = $zeichen_ersetzungs_stelle;
}
//
}
//////
$zeichen_neu_stelle_laenge = strlen($zeichen_neu_stelle);
for($i=0;$i<=$zeichen_neu_stelle_laenge-1;$i++) {
echo substr($zeichen,$zeichen_neu_stelle[$i]-1,1);
}
}
Und hier die Decodier funktion, mit der es Probleme gibt, ich finde den fehler aber nicht, er muss aber irgendwo zwischen zeile 29 und 49 liegen, jedenfalls vermute ich es!
function mdm1_de($pass,$text) {
// Umwandlungskette
$zeichen_dr=" ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#\"!";
$zeichen="!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ";
$zeichenlaenge = strlen($zeichen);
//Passwort als Stelle ausgeben
$passlaenge = strlen($pass);
for ($i=0;$i<=$passlaenge-1;$i++) {
$passzeichen[$i] = strcspn($zeichen,$pass[$i]);
}
//Quersumme des Passwortes
$passzeichen_implode = implode("",$passzeichen);
settype($passzeichen_implode, "STRING"
$null = 0;
for($i=0; $i<strlen($passzeichen_implode); $i++)
{
$null = $null + $passzeichen_implode[$i];
}
//Text um Stellen zurück verschieben.
$textlaenge = strlen($text);
for ($i=0;$i<=$textlaenge-1;$i++) {
$A = strcspn($zeichen,$text[$i]);
$B = $A-$passzeichen[$i];
$C[$i] = $B-$null;
//Überprüfen ob es einen Minus gibt.
$D = substr_count($C[$i],"-" //Ergebniss = $D
if ($D=="1" {
$E = substr($C[$i],1); //Minus entfernen falls da!
echo substr($zeichen_dr,$C[$i],1); // Zeichenkette "-" benutzen und ausgeben.
}
else {
substr($zeichen,$C[$i],1);// Zeichenkette "normale" benutzen und ausgeben.
}
}
}
Mfg. BNS