Portal > Foren > PHP > PHP-Programmierung > Problem mit ver-, bzw entschlüsslung
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 28.01.2007, 15:36 Nach oben    #1
Erfahrener Benutzer
 
Benutzerbild von Garnele
 
Registriert seit: 16.09.2005
Ort: CH :-)
Beiträge: 123
Standard Problem mit ver-, bzw entschlüsslung

Hallo

Ich habe mehr aus spass ein kleines ver-, bzw entschlüsslungsprogrämmchen schreiben wollen. Nun habe ich allerdings ein Probem, welches mich so ziemlich zum verzweifeln bringt:

Den Code mal vorneweg:
PHP-Code:
<?PHP
/* Versuch einer Verschl&uuml;sselung von GET daten. 28.1.2007 */

/* IDEE: Position von a angeben, davon abh&auml;ngig sind die anderen. */

$alphabet = array(=> "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","ä","ö","ü","&","=",1,2,3,4,5,6,7,8,9,0,"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");
$reversed_alpha array_reverse($alphabetTRUE);

function 
generate_coder ()
{
  
$num rand(10,42);
  
$coder = ($num*3+$num-36)/2;
  return 
$coder;
}

function 
generate_code_array ($coder)
{
  global 
$alphabet$reversed_alpha;
  
$coded_alpha = array();
  
$i 0;
  foreach (
$alphabet as $key => $alpha)
  {
    if (
$i == 0)
    {
      if(
67+$key-$coder <= 67)
      {
        
$coded_key 67+$key-$coder//Das ist einfach so da, damit man den Code nicht so schnell rekonstruiren kann aus dem Schlüssel(so zumindest meine Idee...)
        
$i $coded_key;
      }
      else
      {
        
$coded_key 67-$key-$coder;
        
$i $coded_key;
      }
    }
    if (
$i 67)
    {
      
$i 1;
    }
    
$coded_alpha[$alpha] = $reversed_alpha[$i];
    
$i ++;
  }
  return 
$coded_alpha;
}

function 
code_text ($coder$text)
{
  
$coded_alpha generate_code_array ($coder);
  
$text_splited preg_split('#(?<=.)(?=.)#s'$text);
  
$split = array();
  
$i 0;
  foreach (
$text_splited as $value)
  {
    if ( 
$value == " ")
    {
      
$splitt[$i] = $value;
    }
    else
    {
      
$splitt[$i] = str_replace($value,$coded_alpha[$value],$value);
    }
    
$i++;
  }
  
$text "";
  foreach (
$splitt as $value)
  {
    
$text .= $value;
  }
  return 
$text;
}

function 
decode ($coder$text)
{
  
$coded_alpha generate_code_array ($coder);
  
print_r($coded_alpha);
  
$text_splited preg_split('#(?<=.)(?=.)#s'$text);
  echo 
"<br>";
  
print_r($text_splited);
  
$split = array();
  
$i 1;
  foreach (
$text_splited as $value)
  {
    if ( 
$value === " ")
    {
      
$splitt[$i] = $value;
    }
    else
    {
      
$splitt[$i] = str_replace($value,array_search($value,$coded_alpha),$value);
      echo 
"<br>".array_search($value,$coded_alpha)." <= ".$value;
      echo 
"   $value   array_search($value,$coded_alpha)";
    }
    
$i++;
  }
  
$text "";
  foreach (
$splitt as $value)
  {
    
$text .= $value;
  }
  return 
$text;
}

$code generate_coder();
$text "Einst war ich ein schöner Text";
$coded code_text ($code$text);
$decoded decode ($code$coded);
echo 
"<br><br>Ursprünglicher Text: ".$text."<br>Verschlüsselt: ".$coded."<br>Wieder Entschlüsselt: ".$decoded."<br>Verwendeter Schlüssel: ".$code;
?>
Vermutlich ist er nicht optimirt, ich bin kein Profi

Das Problem liegt bei der Entschlüsselung, je nach Schlüssel werden da einige bzw. alle Zeichen nicht richtig entschlüsselt. Eine komplett richtige Entschlüsselung erhalte ich nur mit dem Schlüssel 20. Trotz meinen Debuging versuchen find eich den Fehler einfach nicht. Weiss jemand von euch weiter?

Hier könnt ihr das Script in "Life" ausprobieren.

Ich bin für jede Hilfe dankbar, garnele
__________________
Mein Forum zu Thema Garnelen und Wirbellose: http://www.garnelenforum.ch
Garnele ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.01.2007, 16:39 Nach oben    #2
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 428
Standard Lösung:

Hier mit funktioniert es:

PHP-Code:
<?PHP
/* Versuch einer Verschl&uuml;sselung von GET daten. 28.1.2007 */

/* IDEE: Position von a angeben, davon abh&auml;ngig sind die anderen. */

$alphabet = array("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","ä","ö","ü","&","=","1","2","3","4","5","6","7","8","9","0","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");
$reversed_alpha array_reverse($alphabetTRUE);
$len count($alphabet);

function 
generate_coder ()
{
  
$num rand(10,42);
  
$coder = ($num*4-38)/2;  //[min]2 <=> [max]66
  
return $coder;
}

function 
generate_code_array ($coder)
{
  global 
$alphabet$reversed_alpha$len;
  
$coded_alpha = array();
  
$coded_key $len $coder;
  
$i $coded_key;
  foreach (
$alphabet as $alpha)
  {
    if (
$i >= $len)
    {
      
$i 0;
    }
    
$coded_alpha[$alpha] = $reversed_alpha[$i];
    
$i ++;
  }
  return 
$coded_alpha;
}

function 
code_text ($coder$text)
{
  
$coded_alpha generate_code_array ($coder);
  
$text_splited preg_split('#(?<=.)(?=.)#s'$text);
  
$return "";
  
$i 0;
  foreach (
$text_splited as $value)
  {
    if ( 
$value == " ")
    {
      
$return .= $value;
    }
    else
    {
      
$return .= $coded_alpha[$value];
    }
    
$i++;
  }
  return 
$return;
}

function 
decode_text ($coder$text)
{
  
$coded_alpha generate_code_array ($coder);
  
$text_splited preg_split('#(?<=.)(?=.)#s'$text);
  
$return "";
  
$i 0;
  foreach (
$text_splited as $value)
  {
    if ( 
$value == " ")
    {
      
$return .= $value;
    }
    else
    {
      
$return .= array_search($value$coded_alpha);
    }
    
$i++;
  }
  return 
$return;
}

$code generate_coder();
$text "einst war ich ein schöner text";
$coded code_text ($code$text);
$decoded decode_text($code$coded);
echo 
"($code) $text => $coded => $decoded<br>";
?>
es lag an der Methode generate_code_array()
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Upload bzw. is_uploaded_file Ben PHP-Programmierung 4 12.09.2006 01:21
Logisches Problem beim einsatz von Ereignissen Prophet Allgemeine Java-Programmierung 19 05.06.2006 22:08
Problem mit Cookie und Reloads... Bookworm PHP-Programmierung 10 13.04.2006 12:09
Probleme mit date() bzw. Pear_Date lokari PEAR, PECL und Frameworks 19 10.01.2006 22:24
OSX + Eclipse 3.1 Problem bacarni Eclipse 3 29.07.2005 21:19


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:58 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45