die-kuh-macht-muh: Hilfe bei einem Codier-skript

Hallo! Mein Code bis jetzt (ACHTUNG: Bin totaler Anfänger, also bitte nicht wundern):

<?php  
  
        //Variablen  
	$text = $_REQUEST['codier-text'];  
	$coding = array($code);  
	$coding['A'] = "X";  
	$coding['B'] = "Y";  
	$coding['C'] = "Z";  
	$coding['D'] = "A";  
	$coding['E'] = "B";  
	$coding['F'] = "C";  
	$coding['G'] = "D";  
	$coding['H'] = "E";  
	$coding['I'] = "F";  
	$coding['J'] = "G";  
	$coding['K'] = "H";  
	$coding['L'] = "I";  
	$coding['M'] = "J";  
	$coding['N'] = "K";  
	$coding['O'] = "L";  
	$coding['P'] = "M";  
	$coding['Q'] = "N";  
	$coding['R'] = "O";  
	$coding['S'] = "P";  
	$coding['T'] = "Q";  
	$coding['U'] = "R";  
	$coding['V'] = "S";  
	$coding['W'] = "T";  
	$coding['X'] = "U";  
	$coding['Y'] = "V";  
	$coding['Z'] = "W";  
  
	//schau was drinsteht  
	$newtext = str_replace(?, $coding, $text);  
	print $newtext;  
  
?>  

~~~~~~html
  
<html>  
	<form>  
		<textarea name="codier-text">  
		</textarea>  
		<input type="submit" />  
	</form>  
</html>

Mein Gedanke war's, den text aus der textarea zu requesten, die buchstaben dann gegen die aus dem array auszutauschen...

Hilfeeeee! Bitte! mfg die-kuh-macht-muh

  1. Hallo dkmm,
    Kannst du dein vorhaben vielleicht ein bisschen verdeutlichen, du versucht aus einen eingebenen Text, den du in einer variable $text speicherst mit den buchstaben im array ersetzen??? was soll das bringen, wenn ich im Textfeld a eingebe und im array a finde und das a durch a ersetze habe ich immer noch a, also bitte schildere es mal ein bisschen genauer

    [code lang=php]<?php

    //Variablen
    $text = $_REQUEST['codier-text'];
    $coding = array($code);
    $coding['A'] = "X";
    $coding['B'] = "Y";
    $coding['C'] = "Z";
    $coding['D'] = "A";
    $coding['E'] = "B";
    $coding['F'] = "C";
    $coding['G'] = "D";
    $coding['H'] = "E";
    $coding['I'] = "F";
    $coding['J'] = "G";
    $coding['K'] = "H";
    $coding['L'] = "I";
    $coding['M'] = "J";
    $coding['N'] = "K";
    $coding['O'] = "L";
    $coding['P'] = "M";
    $coding['Q'] = "N";
    $coding['R'] = "O";
    $coding['S'] = "P";
    $coding['T'] = "Q";
    $coding['U'] = "R";
    $coding['V'] = "S";
    $coding['W'] = "T";
    $coding['X'] = "U";
    $coding['Y'] = "V";
    $coding['Z'] = "W";

    Wenn du wirklich das Alphabet in einem Array haben willst kannst du das auchüber diese Funktion

    $alphabet = range('A', 'Z');

    //schau was drinsteht
    $newtext = str_replace(?, $coding, $text);
    print $newtext;

    a durch a tauschen ergibt immer noch a

    Gruß Jonny F.

    1. 'ǝɯɐu$ ıɥ

      Kannst du dein vorhaben vielleicht ein bisschen verdeutlichen, du versucht aus einen eingebenen Text, den du in einer variable $text speicherst mit den buchstaben im array ersetzen??? was soll das bringen, wenn ich im Textfeld a eingebe und im array a finde und das a durch a ersetze habe ich immer noch a, also bitte schildere es mal ein bisschen genauer

      ich glaube die muh-kuh will dann wert gegen schlüssel tauschen.

      ssnɹƃ
      ʍopɐɥs

      --
      Answers: $1, Short: $5, Correct: $25, dumb looks are still free ...
      1. ich glaube die muh-kuh will dann wert gegen schlüssel tauschen.

        des kann gut möglich sein, sieht auch danach aus das die muh-kuh ne 0815 textverschlüsselung coden will.

        Naja aber das ist nur eine vermutung, jedoch sollte er sich vielleicht nochmal en tutorial über arrays anschauen dann wird glaube ich einiges klarer was sein vorhaben angeht.

        Gruß Jonny F.

      2. ich glaube die muh-kuh will dann wert gegen schlüssel tauschen.

        Ja - aber einfacher wäre es, wenn man einfach zwei Arrays (1x für die zu suchenden Zeichenketten und 1x für den Ersatz) nimmt.

      3. Was noch gesagt werden sollte: Die wahrscheinlich gewollte Verschlüsselung lässt sich (bekannte Sprache des Textes vorausgesetzt) sehr sehr schnell anhand der mittleren Wahrscheinlichkeit eines vorkommenden Buchstaben knacken.

        http://de.wikipedia.org/wiki/Monoalphabetische_Substitution#Sicherheit

        Gruß Thomas

  2. Hello,

    Hallo! Mein Code bis jetzt (ACHTUNG: Bin totaler Anfänger, also bitte nicht wundern):

    [code lang=php]<?php

    //Variablen
    $text = $_REQUEST['codier-text'];
    $coding = array($code);
    $coding['A'] = "X";
    $coding['B'] = "Y";
    $coding['C'] = "Z";
    $coding['D'] = "A";
    $coding['E'] = "B";
    $coding['F'] = "C";
    $coding['G'] = "D";
    $coding['H'] = "E";
    $coding['I'] = "F";
    $coding['J'] = "G";
    $coding['K'] = "H";
    $coding['L'] = "I";
    $coding['M'] = "J";
    $coding['N'] = "K";
    $coding['O'] = "L";
    $coding['P'] = "M";
    $coding['Q'] = "N";
    $coding['R'] = "O";
    $coding['S'] = "P";
    $coding['T'] = "Q";
    $coding['U'] = "R";
    $coding['V'] = "S";
    $coding['W'] = "T";
    $coding['X'] = "U";
    $coding['Y'] = "V";
    $coding['Z'] = "W";

    //schau was drinsteht
    $newtext = str_replace(?, $coding, $text);

    Du meintest sicherlich

    $newtext = str_replace(array_keys($coding), $coding, $text);

    Aber das dürfte für Deinen Anwendungsfall in die Hose gehen, da str_replace() quasi-rekursiv arbeitet. Es arbeitet für jede vorgegebene Ersetzung immer den ganzen String durch. Das bedeutet aber, dass Ersetzungen, die am Anfang vorgenommen werden, nachher nicht nochmal in der Suchliste vorkommen dürfen, sonst werden sie nochmal ersetzt, usw.

    Du brauchst nur einen durchlauf für die Ersetzung

    $len = strlen($text);

    for ($i = 0; $ < $len; $i++)
        {
            $text[$i] = $coding[$text[$i]];
        }

    So wird jedes Zeichen genau einmal ersetzt gegen seinen Platzhalter aus dem Array;

    Dieses Verschleierungsverfahren hat natürlich keine wesentliche Sicherheit.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hi!

      Du brauchst nur einen durchlauf für die Ersetzung

      Oder strtr() in der zweiten Variante. Oder ohne Array, dafür aber mit zwei Strings in der ersten Variante.

      So wird jedes Zeichen genau einmal ersetzt gegen seinen Platzhalter aus dem Array;

      Das garantiert strtr() im Gegensatz zu str_replace().

      Lo!

    2. Hi,

      for ($i = 0; $ < $len; $i++)
          {
              $text[$i] = $coding[$text[$i]];
          }

      Das ergibt einen Fehler, sobald ein Zeichen im Originaltext vorkommt, der nicht im $coding umcodiert wird - das sollte noch berücksichtigt werden ...

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
      1. Hello,

        for ($i = 0; $ < $len; $i++)
            {
                $text[$i] = $coding[$text[$i]];
            }

        Das ergibt einen Fehler, sobald ein Zeichen im Originaltext vorkommt, der nicht im $coding umcodiert wird - das sollte noch berücksichtigt werden ...

        Stimmt auffallend.

        dann besser so:

        for ($i = 0; $ < $len; $i++)
             {
                 if isset($coding[$text[$i]])
                 {
                     $text[$i] = $coding[$text[$i]];
                 }
                 else
                 {
                     $text[$i] = $ersatzzeichen;
                 }
             }

        Und dedlfix hatte ja auch noch ein paar Ideen, wie man das machen könnte.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de