#1 31. März 2008 "Verschlüsselung" läuft schief Hallo! also folgendes, ich sollte eine "verschlüsselung" programieren bei der jeder buchstabe vom eingegebenen text durch einen anderen aus einer art geheim alphabeth ersetzt wird. das problem ist nur das er irgentwie nicht ganz das macht und ich nich weiss wieso Code: <?php if (isset($_POST['ok'])) { $str_alph = $_POST['textbox']; $str_ralph = qrstufdpcukhumglyjzbeoiawx; for ($i = 0; $i < strlen($str_alph); $i++) { $arr_alph[] = substr ($str_alph, $i, 1); } for ($i = 0; $i < strlen($str_ralph); $i++) { $arr_ralph[] = substr ($str_ralph, $i, 1); } $posa=0; $posr=0; while ($posa<count($arr_alph)){ if ($posr<=count($arr_ralph)) { $bsa=$arr_alph[$posa]; $bsr=$arr_ralph[$posr]; $bsa=$bsr; $gt=$gt.$bsa; $posr++; } else $posr=o; $posa++; } echo $gt; echo "<br>"; } echo "<form action='rotorkomplex.php' method='POST'> <input type='text' name='textbox'> <input type='submit' name='ok' value='Und los...'>"; ?> hoffe ich hab mich verständlich ausgedrückt und ihr könnt mir helfen + Multi-Zitat Zitieren
#2 31. März 2008 AW: "Verschlüsselung" läuft schief Habs mir nicht ganz angekuckt, aber vll. liegts daran das du $arr_ralph vorher nicht deklariert hast und dieses Array nur in der "For" Schleife existiert. + Multi-Zitat Zitieren
#3 31. März 2008 AW: "Verschlüsselung" läuft schief so habs überarbeitet (die forschleife war überflüssig) gibts noch formsachen oder halt, kann ich es noch einfacher halten? code siehe oben EDIT// also es läuft alles aber das problem ist das wenn der text länger als das geheimalphabet ist gehts nich weiter sondern er hört dann da auf! wieso? ich hab das doch extra mit der if else abfrage überprüft + Multi-Zitat Zitieren
#4 31. März 2008 AW: "Verschlüsselung" läuft schief mir ist aufgefallen dass du kleine syntax-fehler hast: PHP: <? $str_ralph = qrstufdpcukhumglyjzbeoiawx ; // ersetzen durch $str_ralph = "qrstufdpcukhumglyjzbeoiawx" ; ?> um ein string in array zu konventieren nimmst du einfach str_split(). + Multi-Zitat Zitieren
#5 1. April 2008 AW: "Verschlüsselung" läuft schief Dein Script funktioniert überhaupt nicht ...Das einzige was passiert: Es werden je nach Anzahl der eingegebenen Buchstaben, gleichviele (nur bist 26) Buchstaben des "Geheim"-Alphabets ausgegeben, aber immer in dieser Reihenfolge (qrstufdpcukhumglyjzbeoiawx). Mit meinem überaus bescheidenen PHP-Wissen (funktioniert auch mit großen Strings): PHP: <? php # $eingabe ist die Variable aus dem Formular $eingabe = str_split ( "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" ); # Original und Geheim Alphabet $orig_alph = str_split ( "abcdefghijklmnopqrstuvwxyz" ); $new_alph = str_split ( "qrstufdpcukhumglyjzbeoiawx" ); # Schleife sucht sich den Index-Wert des ersten/zweiten/... Buchstaben der Eingabevariablen im Original Alphabet und tauscht den Buchstaben mit dem aus dem Geheim Alphabet for( $i = 0 ; $i < count ( $eingabe ); $i ++) { for( $j = 0 ; $j < count ( $orig_alph ); $j ++) { if( $eingabe [ $i ]== $orig_alph [ $j ]) { echo $new_alph [ $j ]; } }} ?> Achja durch vertauschen der Alphabete kannst du den Text wieder entschlüsseln. + Multi-Zitat Zitieren
#6 1. April 2008 AW: "Verschlüsselung" läuft schief nene du hast was anderes gemacht! das sollte sozusagen eine "1-rotor-enigma" sein ^^ sprich der buchstabe 1 von der eingabe wird durch den buchstaben 1 vom geheimalphabet (oder eben dem rotor) ersetzt. normalerweise sind da ja noch zwei andere rotoren hinter aber das sollte man nich machen... das geheim alphabet soll sozusagen immer wieder durchlaufen werden bis der eingegebene text zu ende ist das wars. bei dir werden ja bestimmte buchstaben durch festgelegte gegenstücke ersetzt. aber trotzdem danke für die tips bw habt ihr alle + Multi-Zitat Zitieren
#7 1. April 2008 AW: "Verschlüsselung" läuft schief ganz einfach bei deinem prob: die for-schleife ist so angelegt, das er bei $arr_ralph[25] aufhört! diese Änderung an der zweiten for-schleife sollte dein "geheimarray" immer länger bzw genausolang halten wie dein posttext: PHP: $count = 0 ; for ( $i = 0 ; $i < strlen ( $str_ralph ); $i ++) { $count ++; $arr_ralph [] = substr ( $str_ralph , $i , 1 ); // routine erweitern, wenn der counter nicht die laenge von $str_alph erreicht hat // dein geheimpasswort wird wieder von anfang bis ende in die array gespeichert $i =( $i ==( strlen ( $str_ralph )- 1 ) && $count < strlen ( $str_alph )) ? 0 : $i ; } unset( $count ); Ich versteh es nur nich ganz^^ Weil: peter ist dann bei dir qrstu und udolf ist qrstu Was bringen diese identischen Werte frage ich mich. + Multi-Zitat Zitieren
#8 1. April 2008 AW: "Verschlüsselung" läuft schief Also ich hab mal kurz das Rotor-Verschlüsselungs-Verfahren überflogen, und wenn ichs richtig verstanden habe, werden schon feste Buchstaben durch feste andere Buchstaben ersetzt. nur eben mehrere Male hintereinander mit verschiedenen Alphabeten, so dass das Prinzip nicht so einfach herausgefunden werden kann. Denn so wie du es jetzt hast, wäre es -wie schon gesagt wurde- recht sinnlos, das einzige was bei deinem Verfahren vom Originaltext erhalten bleibt ist die Länge + Multi-Zitat Zitieren
#9 3. April 2008 AW: "Verschlüsselung" läuft schief *hust* ROT13 *hust* ROT13 – Wikipedia als PHP-Beispiel: http://www.miranda.org/~jkominek/rot13/php/rot13.phtml Für andere Verschiebungen einfach den Faktor 13 anpassen! + Multi-Zitat Zitieren