Ich versuche, einige Textnachrichten mit mcrypt von PHP und der Chiffre Rijndael zu verschlüsseln, aber ich bin nicht sicher über den MCRYPT_MODE_modename (laut PHP Handbuch sind diese verfügbar "ecb", "cbc", "cfb", "ofb "," nofb "oder" streamen "aber ich lese da sind eigentlich noch ein paar mehr). Ich habe keine Ahnung, was jeder tut oder wie man sie benutzt.
Ich habe zwei Dinge gelesen, dass der ECB-Modus nicht benutzt werden sollte und MCRYPT_RAND auch nicht. Sie haben nicht erklärt warum. Für den ECB-Modus schätze ich, dass es immer dieselbe verschlüsselte Ausgabe für den gleichen Klartext erzeugt (vielleicht könnte das für einen Angriff verwendet werden), keine Ahnung von MCRYPT_RAND (erwähnt von @azz hier ).
Meine Frage ist, welcher Mcrypt-Modus sollte ich verwenden, und es wäre toll, ein Beispiel für PHP-Code mit zu sehen, weil alle Beispiele, die ich gefunden habe, ECB verwenden. Die Zeichenfolgen, die ich verschlüsseln möchte, enthalten nur ASCII-Text und variable Länge, nicht größer als 500 Zeichen.
ecb ist das einfachste und hat Schwächen, daher wird es nicht empfohlen ( Ссылка ). cbc gilt als deutlich stärker als ecb. Einige der anderen sind möglicherweise stärker als cbc, aber sie sind alle stream bezogen, so cbc sollte Ihren Bedürfnissen entsprechen.
Von ... Ссылка ...
Ich bin mir nicht sicher, warum MCRYPT_RAND empfohlen wird, aber es kann sein, dass der System-Zufallszahlengenerator auf vielen Systemen nicht als wirklich zufällig betrachtet wird. Es gibt nur zwei Alternativen, die je nach System und PHP-Version möglicherweise nicht verfügbar sind. Von ... Ссылка ...
Der folgende Code ist nur ein kurzes Beispiel. Es funktioniert, aber ich kann seine Stärke nicht bestätigen.
%Vor%Der ECB-Modus ist nicht sicher, weil er keine Zufälligkeit in die verschlüsselten Daten einführt. Das bedeutet im Grunde, dass Sie die gleichen Muster der Eingabe in der Ausgabe sehen werden (zB sehen Sie das Bild hier ) Es ist eine "verschlüsselte" Version von Tux, das Logo von Linux.
Der MT_RAND wird nicht als sicher angesehen, da er den Zufallszahlengenerator des Betriebssystems verwendet (die Funktion rand()
von PHP).
Für Kryptographiezwecke ist es besser, MCRYPT_DEV_RANDOM
(liest Daten von / dev / random) oder MCRYPT_DEV_URANDOM
(liest Daten von / dev / urandom) zu verwenden.
Die am häufigsten verwendeten und sichersten Verschlüsselungsmodi, die mit Mcrypt verfügbar sind, sind der CBC- und der CTR-Modus. Sie eignen sich für allgemeine Anwendungsfälle. Es ist immer besser, Verschlüsselung + Authentifizierung zu verwenden (d. H. Verschlüsseln und authentifizieren mit HMAC). Zum Beispiel wird der CBC-Modus ohne Authentifizierung durch den Padding-Oracle-Angriff beeinträchtigt.
Tags und Links php cryptography encryption aes mcrypt