Ich habe diesen Aufruf mcrypt_encrypt für einen gegebenen Schlüssel $, $ Nachricht und $ iv:
%Vor% Ich möchte den mcrypt_encrypt
-Aufruf zu einem openssl_encrypt
eins ändern, um dies zukunftssicher zu machen.
Mit $mode = 'des-ede3-cbc'
oder $mode = '3DES';
und $options = true
bekomme ich eine ähnlichere Antwort, aber nicht identisch. Gibt es eine andere Möglichkeit, es aufzurufen, um eine perfekte Übereinstimmung zu erhalten?
Ich bekomme das (base64_encoded) für eine lorem-ipsum $message
+ $key
Kombination, also fange ich an zu glauben, dass die eine oder die andere Funktion die Nachricht vor dem Verschlüsseln etwas auffüllt ...
für mcrypt
"Y + JgMBdfI7ZYY3M9lJXCtb5Vgu + rWvLBfjug2GLX7uo="
für openssl
"Y + JgMBdfI7ZYY3M9lJXCtb5Vgu + rWvLBvte4swdttHY="
Versucht mit $ Optionen OPENSSL_ZERO_PADDING zu übergeben, aber alles außer 1 ( OPENSSL_RAW_DATA oder true ) zu übergeben ergibt einen leeren String ...
Verwenden Sie weder OPENSSL_ZERO_PADDING
noch OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING
work ...: (
Irgendwelche anderen Hinweise? Ich verwende "OpenSSL 1.0.2g 1. März 2016".
Lesen Sie bereits dies q & amp; a, aber es tut nicht Hilf mir. Nicht die nur eins mit Padding Probleme, aber nein Lösung bisher in Sicht. (Zweite Antwort spricht über Hinzufügen von Padding zu Mcrypt Anruf, ich würde wirklich wollen entfernen Padding von openssl Verschlüsselungsanruf ...
mcrypt_encrypt Zero-Pads Eingabedaten, wenn es kein Vielfaches der Blockgröße ist. Dies führt zu mehrdeutigen Ergebnissen, wenn die Daten selbst abschließende Nullen haben. Anscheinend erlaubt Ihnen OpenSSL nicht, in diesem Fall Null-Padding zu verwenden, was den falschen Rückgabewert erklärt.
Sie können dies umgehen, indem Sie das Padding manuell hinzufügen.
%Vor%Dies druckt beide als gleich.
%Vor% mcrypt_encrypt
verwendet Nullen, um die Nachricht an die Blockgröße anzupassen. So können Sie dem Schwanz Ihrer Rohdaten Nullen hinzufügen und dann den Block verschlüsseln.
Die Verwendung von OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING
sollte funktionieren. Wenn dies nicht der Fall ist, können Sie das Padding von den entschlüsselten Daten selbst entfernen.