Ich war auf der Suche nach einer Antwort, aber konnte es hier nicht finden. Bitte entschuldigen Sie, wenn diese Frage bereits gestellt wurde.PHP mcrypt_encrypt/mcrypt_decrypt Problem, gibt einen anderen Wert
Ich habe einen einfachen Code zu verschlüsseln und eine Zeichenfolge zu entschlüsseln, suchen Strings gleich, aber wenn mit ihnen zu vergleichen == sie scheinen das gleiche nicht zu sein, so Hashes auch unterschiedlich sind ..
Hier wird mein Code:
$oppa = "rompish";
$opp_enc = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, "key", $oppa, MCRYPT_MODE_ECB);
$opp_dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, "key", $opp_enc, MCRYPT_MODE_ECB);
echo $oppa."<br />".$opp_dec."<br />";
if ($oppa == $opp_dec) echo "YAY"; else echo "NOPE";
Auf der Seite:
rompish rompish NOPE
Bitte sag mir, was ich falsch mache.
Vielen Dank!
AES verschlüsselt immer Dinge in Blöcken von 16 Bytes. Offenbar puffert "mcrypt_encrypt" die Zeichenfolge mit null Bytes auf, bis sie ein Vielfaches von 16 ist. "Mcrypt_decrypt" entschlüsselt dies pflichtgemäß, aber es fehlen die Informationen, um die Auffüllung zu entfernen. Und Sie machen sich selbst etwas vor, weil die angezeigten Werte gleich aussehen, obwohl "oppa_dec" tatsächlich mit 9 Nullbytes endet. Verwenden Sie stattdessen ein sinnvolles Padding-Schema. –
Das ist eine Antwort, kein Kommentar, GregS (mach es so oder ich poste es mit deinem Namen am Ende: P) –