2013-03-10 4 views
5

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!

+2

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. –

+0

Das ist eine Antwort, kein Kommentar, GregS (mach es so oder ich poste es mit deinem Namen am Ende: P) –

Antwort

2

AES verschlüsselt immer Dinge in Blöcken von 16 Bytes. Anscheinend mcrypt_encrypt Pads die Zeichenfolge mit Null-Bytes, bis es ein mehrere von 16 ist. mcrypt_decrypt pflichtgemäß entschlüsselt dies, aber fehlt die Informationen, um die Auffüllung zu entfernen. Und Sie täuschen sich , weil die angezeigten Werte gleich aussehen, obwohl oppa_dec tatsächlich mit 9 Nullbytes endet. Verwenden Sie stattdessen ein sinnvolles Padding-Schema . - GregS

Um diese Nullzeichen zu entfernen, können Sie die rtrim-Funktion verwenden. Nach dem Ausführen der entschlüsselten Ausgabe sollte es gleich sein.

Verwandte Themen