Verschlüsselung in php
Cryptographie mit mcrypt - cryptiere()
(die Hilfe ist unten)

  Klar (0 Bytes ):
Fehler: [FATAL] no key;

Algorithmus: Modus:

  Schlüssel ( 0 Bytes ):
Fehler: [FATAL] no key;

                             

Hilfe, was ist das hier?
(nach oben)

Auf dieser Seite kannst Du Verschlüsselungsalgorithmen und -modi testen. Entstanden ist sie, weil ich Datenbankeinträge absichern und mir dafür einen Überblick über die auf dem Server installierten Möglichkeiten der Verschlüsselung verschaffen wollte. Herausgekommen ist eine kleine, nützliche Funktion, die Verschlüsselung quaaasi zum Kinderspiel macht ;)

Gib' einfach einen Klartext beliebiger Länge und irgendein Passwort ein und schicke das Formular ab - schon erscheint der eingegebene Text verschlüsselt im unteren Textfeld, evtl. zusammen mit allgemeinen ("Log:") und Fehlerinformationen aus der verarbeitenden Funktion. Im oberen Feld wird der vorherige Inhalt des unteren Feldes zurückgegeben, nun natürlich entschlüsselt. Schicke das Formular einfach noch einmal ab, denn erst jetzt enthält das untere Feld ja etwas Entschlüsselbares, und zwar Deinen gerade eben verschlüsselten Klartext. Beobachte, was jetzt passiert. Ah ja, was unten stand, wird in das obere (Klar-)Feld entschlüsselt, der Inhalt des oberen Feldes erscheint verschlüsselt im unteren (Schlüssel-)Feld. Dies bedeutet, dass Du auch mit bereits verschlüsselten Texte im unteren Feld beginnen könntest.

Herzstück des Ganzen ist die Funktion cryptiere(). Kurz gesagt, nimmt sie einen Text, ein Passwort und einen Initialisierungsvektor (IV) sowie Angaben zu Richtung, Algorithmus und Modus und ver- oder entschlüsselt (je nach Richtung) den Text mit dem Passwort und dem IV unter Nutzung des Algorithmus im gewünschten Modus. Alles klar? Zurückgegeben wird ein Array aus ver-/entschlüsseltem Text, dem verwendetem Schlüssel und IV, Algorithmus, Modus, dem Log und den Fehlern.

cryptiere() benutzt die in php verfügbare mcrypt-Bibliothek von Nikos Mavroyanopoulos. In der php-Doku gibt es mehr Infos zu den mcrypt-Funktionen in php, auch zum bisher nicht erklärten IV und den Unterschieden der Algorithmen und Modi. Beachte: Manche Algorithmen arbeiten nicht in jedem Modus. Ich habe noch keine Routine zur Behandlung der mcrypt()-eigenen Fehler eingebaut, und das kommt auch nicht mehr. Wenn Du's einbauen willst, veröffentliche ich es gerne auf dieser Seite.

Im übrigen wird das Ergebnis nach der Verschlüsselung noch base64-codiert, um es z.B. per eMail übertragbar und/oder ohne weiteres in einer Datenbank speicherbar zu machen. Dies setzt nicht die Sicherheit herab, ganz im Gegensatz zu einer Codierung vor der Verschlüsselung.

Willst Du allerdings ein Ergebnis komprimieren, tust Du das besser vor der Verschlüsselung, nicht nachher. Zum einen wird eine Komprimierung nach Verschlüsselung eine nicht geringe Größenänderung nach sich ziehen, zum anderen verwischst Du bereits durch die Komprimierung sprachspezifische Häufigkeitsverteilungen von Buchstaben in Texten.

Aber genug aus der Theorie der Cryptographie, wer mehr Fragen oder den oben angesprochenen Fehler-Patch hat, schreibt mir, woll?

Viel Spaß beim cryptieren() wünscht

Robert Kehl

(nach oben)
(letzte Änderung: 22.06.2004)