#1 30. November 2007 Vigenèr-Verschlüsselung [fast fertig] Hallo, hab eine PhP-Version der Vigenèr-Verschlüsselung geschrieben: Code: <?php $kt="Hallo"; $st="code"; $kt=strtoupper($kt); $st=strtoupper($st); $kbs=""; $sbs=""; for ($pos=0;$pos<strlen($kt);$pos++){ $kbs=substr($kt,$pos,1); $sbs=substr($st,$pos,1); $gtb=(chr((ord($kbs)-ord("A"))%25+ord($sbs))); $gt=$gt.$gtb; } echo "Klartext: "; echo $kt; echo "<br>"; echo "Chiffre: "; echo $st; echo "<br>"; echo "Geheimtext: "; echo $gt; ?> einziges problem ist jetzt das $st ja eigentlich wieder von vorne durchlaufen soll wenn $pos größer ist... nur fehlt mir gerade die passende idee das zu machen will da ungerne irgentwo noch ne schleife reinbauen oder so... gibts da was besseres? und wie findet ihr das sonst so? + Multi-Zitat Zitieren
#2 30. November 2007 AW: Vigenèr-Verschlüsselung [fast fertig] hey, geile sache. versuche gerad mal eine lösung zu finden. kann man das auch wieder entschlüsseln? + Multi-Zitat Zitieren
#3 30. November 2007 AW: Vigenèr-Verschlüsselung [fast fertig] nur per wahrscheinlichkeitsanalyse + Multi-Zitat Zitieren
#4 30. November 2007 AW: Vigenèr-Verschlüsselung [fast fertig] hab einfach mal $st solange dupliziert bis $st > $kt Code: <?php $kt = "HalloHallo"; $st = "code"; // wenn $kt größer ist if (strlen($kt) > strlen($st)){ // wie oft passt $st in $kt -> aufrunden $div = ceil (strlen($kt) / strlen($st)); // $st in $stmp duplizieren for ($i = 0; $i < $div; $i++){ $stmp .= $st; } // $st überschreiben $st = $stmp; } $kt = strtoupper($kt); $st = strtoupper($st); $kbs = ""; $sbs = ""; for ($pos = 0; $pos < strlen($kt); $pos++){ $kbs = substr($kt,$pos,1); $sbs = substr($st,$pos,1); $gtb = (chr((ord($kbs) - ord("A"))%25 + ord($sbs))); $gt .= $gtb; } echo "Klartext: "; echo $kt; echo "<br>"; echo "Chiffre: "; echo $st; echo "<br>"; echo "Geheimtext: "; echo $gt; ?> kann also nicht entschlüsselt werden? schade, hätte das für mailto (verschlüsselung von e-mail adressen) verwenden können. + Multi-Zitat Zitieren
#5 30. November 2007 AW: Vigenèr-Verschlüsselung [fast fertig] argh also es macht den anschein fertig zu sein aber ich glaube hier steckt noch ein fehler drinn: Code: $gtb=(chr((ord($kbs)-ord("A"))%25+ord($sbs))); wenn ich jetzt als Klartext: ABCU und als Chiffre: XYZL nehme kommt das raus: Geheimtext: XZ\` kann mir bitte bitte schnell wer helfen ist wirklich dringen :S Spoiler Code: <?php echo " <form action='script.php' method=POST> <h1>Vigenèr-Verschlüsselung</h1> <br> Zu verschlüsselnder Text: <br> <input type='text' name='ktbox'> <br> Schlüssel: <br> <input type='text' name='stbox'> <br> <input type='submit' name='ok' value='Verschlüsseln'> </form> "; if (isset($_POST['ok'])){ $kt=$_POST['ktbox']; $st=$_POST['stbox']; $kt=preg_replace("/[^a-zA-Z]/","",$kt); $st=preg_replace("/[^a-zA-Z]/","",$st); //sonderzeichen werden aus den Strings entfernd if (strlen($kt) > strlen($st)){ // wie oft passt $st in $kt -> aufrunden $div = ceil (strlen($kt) / strlen($st)); // $st in $stmp duplizieren for ($i = 0; $i < $div; $i++){ $stmp .= $st; } // $st überschreiben $st = $stmp; } $kt=strtoupper($kt); $st=strtoupper($st); // $st und $kt auf großbuchstaben setzen $kbs=""; $sbs=""; //leere Variablen für einzelne Buchstaben for ($pos=0;$pos<strlen($kt);$pos++){ //solange $pos kleiner ist als $kt wird ausgeführt $kbs=substr($kt,$pos,1); $sbs=substr($st,$pos,1); //von $kbs und $sbs wird jeweils 1 zeichen an der stelle $pos entnommen $gtb=(chr((ord($kbs)-ord("A"))%25+ord($sbs))); //die Zeichenzahl von $kbs wird mit der von groß A subtrahiert, durch den Rest von 25, plus der Zeichenzahl von $sbs $gt=$gt.$gtb; //$gtb wird an $gt angehängt } echo "Klartext: "; echo $kt; echo "<br>"; echo "Chiffre: "; echo $st; echo "<br>"; echo "Geheimtext: "; echo $gt; //Ausgabe des Klar-, Chiffre- und Geheimtextes } ?> + Multi-Zitat Zitieren