Hilfe bei einem Codier-skript
die-kuh-macht-muh
- php
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
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.
'ǝɯɐ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
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.
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.
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
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
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!
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
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