Henryk Plötz: String verschlüsseln und entschlüsseln

Beitrag lesen

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! ~~