[PHP] Vigenèr-Verschlüsselung [fast fertig]

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Don Poncho, 30. November 2007 .

Schlagworte:
  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?
     
  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?
     
  3. 30. November 2007
    AW: Vigenèr-Verschlüsselung [fast fertig]

    nur per wahrscheinlichkeitsanalyse
     
  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.
     
  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&egrave;r-Verschl&uuml;sselung</h1>
    <br>
    Zu verschl&uuml;sselnder Text:
    <br>
    <input type='text' name='ktbox'>
    <br>
    Schl&uuml;ssel:
    <br>
    <input type='text' name='stbox'>
    <br>
    <input type='submit' name='ok' value='Verschl&uuml;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
    }
    ?>
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.