Tom: String verschlüsseln und entschlüsseln

Hallo!
Gibt es in PHP eine Möglichkeit, einen String zu verschlüsseln und wieder zu entschlüsseln? Also nicht so was wie md5(), was nur in eine Richtung geht. Mir ist klar, das das nicht so sicher ist, ich möchte nur vermeiden, dass man sofort das Wort erkennt.
Danke! Tom

  1. Moin,

    Gibt es in PHP eine Möglichkeit, einen String zu verschlüsseln und wieder zu entschlüsseln?

    http://de.php.net/mcrypt

    --
    Henryk Plötz
    Grüße aus Berlin
    ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
    ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
    1. Hallo!

      http://de.php.net/mcrypt

      Wenn ich das richtig verstanden habe, geht das nicht mit der Default-Einstellung von PHP. Gibt es da nichts in der Art?

      Danke! Tom

      1. Hallo, Tom,

        Wenn ich das richtig verstanden habe, geht das nicht mit der Default-Einstellung von PHP. Gibt es da nichts in der Art?

        doch, z.B. base64-encode ...

        http://de.php.net/manual/en/function.base64-encode.php
        http://de.php.net/manual/en/function.base64-decode.php

        Aber das ist natürlich nicht sicher, weil jeder den verschlüsselten String ganz einfach wieder entschlüsseln kann.

        Noch simpler (und unsicherer) ist ...

        http://de.php.net/manual/en/function.str-rot13.php

        Und hier ist eine Zweiwegeverschlüsselung mit Passwort ...

        http://www.hansanderson.com/php/crypto/

        Durch Kombination verschiedener Methoden kann man evtl. eine höhere Sicherheit erzielen.

        Grüße,

        Sebastian Becker

        1. Moin,

          Durch Kombination verschiedener Methoden kann man evtl. eine höhere Sicherheit erzielen.

          Nein. Mehrere Methoden zu kombinieren bringt genauso viel Sicherheit wie eine Methode mit einem etwas längeren Schlüssel. Nun haben aber 2 der von dir genannten Kodierungen (das hat nichts mit Verschlüsseln zu tun!) gar keinen Schlüssel.

          http://www.hansanderson.com/php/crypto/

          Der Code ist ziemlich unansehnlich und überkomplex aber das riecht nach einer deVignere-Chiffre. Wenn man genug verschlüsselten Text hat, kann man die in der Regel recht einfach über Häufigkeitsanalysen brechen. Der Autor scheint da aber kein besonders solides Wissen zu zu haben:
          | You can also decrypt or encrypt numerous time, through looping or other
          | methods. The alphabet of characters is also changeable. All these things
          | allow you to modify and solidify the encryption.

          Hier gilt nämlich die obige Aussage besonders: Mehrfache Anwendung entspricht einer Anwendung mit einem anderen Schlüssel.

          Nochmal: Der korrekte Weg ist die Nutzung der mcrypt-Funktionen. Bei den mir bekannten PHP-Installationen war das schon drauf, also einfach mal in phpinfo() nachsehen.

          Wenn man es unbedingt unsicher haben will, kann man auch folgende einfache xor-Funktion nehmen:

          function verschluesseln($klartext, $schluessel)
          {
           $geheimtext = "";
           for($i=0; $i<strlen($klartext);$i++)
            $geheimtext .= chr(ord($klartext{$i})^ord($schluessel{$i%strlen($schluessel)}));
           return base64_encode($geheimtext);
          }

          function entschluesseln($geheimtext, $schluessel)
          {
           $geheimtext = base64_decode($geheimtext);
           $klartext = "";
           for($i=0; $i<strlen($geheimtext);$i++)
            $klartext .= chr(ord($geheimtext{$i})^ord($schluessel{$i%strlen($schluessel)}));
           return $klartext;
          }

          (ungetestet)

          Falls der Schluessel mindestens so lang ist wie die zu verschlüsselnden Daten, aus zufälligen Zeichen besteht und niemals wiederverwendet wird ist das sogar sicher. Ansonsten ist es genauso unsicher wie die von Sebastian verlinkte Klasse. (Bloß mit weniger Code und es kommt sogar mit Binärdaten klar.)

          Nochmal zur Klarstellung: Ohne die eben genannten Vorraussetzungen ist das ekelhaft unsicher und sollte nicht für irgendwie wichtige Daten verwendet werden.

          --
          Henryk Plötz
          Grüße aus Berlin
          ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
          ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
          1. Moin,

            daß die Methoden unsicher sind, habe ich ja gesagt. Manchmal geht es aber gar nicht um höchste Sicherheit, dann kann man doch sicherlich auch mit einfachen Methoden arbeiten ...

            Was hälst Du denn im Bezug auf Sicherheit und Coding von den CryptoMAK-Funktionen?

            http://makcoder.sourceforge.net/

            Grüße,

            Sebastian

            1. Moin,

              Was hälst Du denn im Bezug auf Sicherheit und Coding von den CryptoMAK-Funktionen?

              Eine Webseite die ernsthaft "base64 encryption" schreibt kann man kaum für voll nehmen.
              Das xoft-Ding das da verlinkt ist, ist im Prinzip genau die eben schon von mir genannte Xor-Operation, bloß um ein paar Schritte aufgebläht die aber an der Sicherheit nichts ändern und im Gegenteil die Benutzbarkeit von langen Schlüsseln (wie sie nötig sind um lange Texte zu verschlüsseln) einschränken.

              Das andere sind halt die früher gebräuchlichen einfachen Chiffren (zum Teil deutlich schwächer als das Cryption-Ding). Wirklich sehr interessant zum Rumspielen und Lernen, aber nicht für ernsthafte Anwendung brauchbar. (Auf jeden Fall nicht, wenn man mehr als ein oder zwei Hände voll Text mit dem gleichen Schlüssel verschlüsseln will.)

              --
              Henryk Plötz
              Grüße aus Berlin
              ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
              ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
        2. Hallo, Tom,

          Hallo Sebastian!

          z.B. base64-encode ...

          Danke, so was hab ich gesucht! :-)

          Tschüß, Tom

          1. Moin,

            z.B. base64-encode ...

            Danke, so was hab ich gesucht! :-)

            Dann schreib doch einfach nichts mehr von Verschlüsseln. Das hat mit Verschlüsselung nämlich nichts zu tun und verwirrt die Leute nur.

            --
            Henryk Plötz
            Grüße aus Berlin
            ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
            ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
  2. Hallo,

    warum nicht selbst machen mit str_replace()?

    Grüsse
    Stolzi

    --
    Meine freien PHP_Scripts unter http://stolzi.westo.at
    zB Forum, Album, Mailer, usw.