Thema: Scriptangebot Codieren von Texten
Einzelnen Beitrag anzeigen
Alt 08.02.2010, 12:34  
Ryuuzaki93
Erfahrener Benutzer
 
Registriert seit: 11.12.2009
Beiträge: 117
PHP-Kenntnisse:
Fortgeschritten
Ryuuzaki93 ist zur Zeit noch ein unbeschriebenes Blatt
Standard 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("&Auml;""Ä"$uc);
  
$uc str_replace("&auml;""ä"$uc);
  
  
$uc str_replace("&Ouml;""Ö"$uc);
  
$uc str_replace("&ouml;""ö"$uc);
  
  
$uc str_replace("&Uuml;""Ü"$uc);
  
$uc str_replace("&uuml;""ü"$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
Ryuuzaki93 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten