Ankündigung

Einklappen
Keine Ankündigung bisher.

Cäsarverschlüsselung in PHP

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Cäsarverschlüsselung in PHP

    Hi!
    Ich hab ein Prob: ich hab folgenden Code für eine modifizierte Variante der Cäsar-Verschlüsselung programmiert:
    PHP-Code:
    <html>
    <head><title>starke Verschlüsselung</title></head>
    <body>

    <?php//Cäsar-Verschlüsselung
    if (!isset($caesarv) or $caesarv==""){}
    else
    {
      $Verschiebung='0';$i='0';$decode=urldecode($caesarv);
       while($i < strlen($caesarv))
        {
          if ($Verschiebung=='0')
          {
            for ($Verschiebung=0;$Verschiebung<=10,$i<strlen($decode);$Verschiebung++,$i++)
            {
              $verschluesselung .= chr(ord(urldecode($caesarv{$i}))+$Verschiebung);     //Diese Variable wird  mit error_reporting(E_ALL) als undefiniert bezeichnet.
              if ($verschluesselung{$i}>255)
              {
                $verschluesselung{$i}=$verschluesselung{$i}-255;
            }
              }
            }
          else if ($Verschiebung=='10')
          {
            for ($Verschiebung=10;$Verschiebung>=0,$i<strlen($decode);$Verschiebung--,$i++)
            {
              $verschluesselung .= chr(ord(urldecode($caesarv{$i}))+$Verschiebung);
              if ($verschluesselung{$i}>255)
              {
                $verschluesselung{$i}=$verschluesselung{$i}-255;
            }
              }
          }
          }
        echo htmlentities($verschluesselung,ENT_QUOTES,'ISO-8859-1');
    }

    //Cäsar-Entschlüsselung
      $Verschiebung='0';$a='0';$urldecode=rawurldecode($verschluesselung);
       while($a < strlen($urldecode))
        {
          if ($Verschiebung=='0')
          {
            for ($Verschiebung=0;$Verschiebung<=10,$a<strlen($urldecode);$Verschiebung++,$a++)
            {
              $entschluesselung .= chr(ord(rawurldecode($verschluesselung{$a}))-$Verschiebung);    //Diese Variable wird  mit error_reporting(E_ALL) als undefiniert bezeichnet.
              if ($entschluesselung{$a}<0)
              {
                $entschluesselung{$a}=255+$enschluesselung{$a};
            }
              }
            }
         else if ($Verschiebung=='10')
          {
            for ($Verschiebung=10;$Verschiebung>=0,$a<strlen($urldecode);$Verschiebung--,$a++)
            {
              $entschluesselung .= chr(ord(rawurldecode($verschluesselung{$a}))-$Verschiebung);
              if ($entschluesselung{$a}<0)
              {
                $entschluesselung{$a}=255+$enschluesselung{$a};
            }
              }
          }
          }
        echo "


     $entschluesselung 


    ".htmlentities($urldecode,ENT_QUOTES,'ISO-8859-1');

    ?>



    Hier können Sie einen beliebigen Text mit einer auf der Cäsar-Verschlüsselung basierenden Technik verschlüsseln!
    <form action='caesarverschluesselung.php' method='get' accept-charset="ISO-8859-1">
    <table border='0' cellpadding='0' cellspacing='4'>
    <tr>
    <td align='right'>Text:</td>
    <td><textarea class='mOFF' cols='50' rows='10' name='caesarv'></textarea></td>
    </tr><tr>
    <td align='right'><input type='submit' value='Verschlüsseln!'></td>
    </tr></table></form>





    Und hier können Sie einen mit dieser Seite verschlüsselten Text wieder entschlüsseln!
    <form action='caesarverschluesselung.php' method='get' accept-charset="ISO-8859-1">
    <table border='0' cellpadding='0' cellspacing='4'>
    <tr>
    <td align='right'>Text:</td>
    <td><textarea class='mOFF' cols='50' rows='10' name='verschluesselung'></textarea></td>
    </tr><tr>
    <td align='right'><input type='submit' value='Entschlüsseln!'></td>
    </tr></table></form>


    </body>
    </html>
    Dabei wechselt die Verschiebung von 0 bis 10 und zurück.
    Das Problem: Solange die Entschlüsselung auf dem Server abläuft, ist alles richtig. Wenn ich das Verschlüsselte in die untere Eingabemaske eingebe, kommt nur Müll mit ein paar richtigen Zeichen raus, vor allem bei längeren Texten. An der Kommunikation zwischen Browser und Server liegt es nicht, wie die Zeile 65 beweist.

    Kann mir jemand helfen?

    MfG, Ilinsekt

    edit: code-Tags in php-Tags umgewandelt. Variablen, die mit error_reporting(E_ALL) als undefiniert bezeichnet werden, mit Kommentaren markiert.

  • #2
    1. Zunächst würde ich mal vorschlagen, dass Du uns verrätst, wo Zeile 66 denn sein soll. So auf Anhieb sieht man das nicht.

    2. Dann solltest Du den Code in PHP-Tags einpacken und nicht in Code-Tags. Dann klappt das auch mit dem Syntax-Highlighting.

    3. Und abschließend solltest Du die Suche hier im Forum mal nach register_globals und nach error_reporting(E_ALL) befragen.

    Mit dem Ver- und Entschlüssel hat das zwar nichts zu tun, aber die ersten beiden Dinge könnten bewirken, dass sich wirklich mal jemand den Code ansieht. Das was Du gepostet hast, ist nicht wirklich angenehm zu lesen.
    Benutzt dazu bitte die Editier-Funktion und poste nicht den ganzen Code neu.

    Der dritte Punkte sollte in jedem Script beachtet werden.

    Kommentar


    • #3
      Sind da welche sonderzeichen drin die evtl escaped werden ?
      Zeilenumbrüche in textareas werden auch escaped

      Kommentar


      • #4
        @Der_Gerhard:
        Ich hab das Script mal mit error_reporting(E_ALL) ausgeführt. Wenn ich in der oberen Eingabemaske was verschlüssele, zeigt er mir zwar an, dass zwei Variablen in den Zeilen 19 und 49 (im Code oben sind die Zeilen verschoben, weil das Forum oben einige Zeilen frei gelassen hat) undefiniert sind, aber es klappt trotzdem alles.

        Mein Webhoster(www.funpic.de) hat register_globals auf on und die ini_set aus Sicherheitsgründen deaktiviert.

        @cytrobic:
        Ich formatiere die Eingabe mit rawurldecode. Ich habe mal das Verschlüsselte mit meiner Eingabe verglichen (Zeile 62), alles stimmt.

        Kommentar


        • #5
          Zitat von Ilinsekt
          @Der_Gerhard:
          Ich hab das Script mal mit error_reporting(E_ALL) ausgeführt. Wenn ich in der oberen Eingabemaske was verschlüssele, zeigt er mir zwar an, dass zwei Variablen in den Zeilen 19 und 49 (im Code oben sind die Zeilen verschoben, weil das Forum oben einige Zeilen frei gelassen hat) undefiniert sind, aber es klappt trotzdem alles.
          Und was hält Dich nun davon ab, uns mitzuteilen, welche Variablen undefiniert sind oder die Zeilen 19 und 49 im obigen Code mal zu markieren, indem Du nen Kommentar mit der Zeilennummer reineditierst?

          Ist es vielleicht eine fehlende Initialisierung von $i?

          Kommentar

          Lädt...
          X