5
我正在尋找答案,但在這裏找不到它。請原諒,如果這個問題已經被問到。PHP mcrypt_encrypt/mcrypt_decrypt問題,返回一個不同的值
我有一個簡單的代碼加密和解密字符串,字符串看起來是一樣的,但使用==他們似乎不相同比較時他們,所以哈希值是不同以及..
這裏是我的代碼:
$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";
在頁面:
rompish rompish NOPE
請告訴我我做錯了什麼。
謝謝!
AES始終以16字節的塊加密事物。顯然'mcrypt_encrypt'用零字節填充字符串,直到它是16的倍數。'mcrypt_decrypt'忠實地解密這個,但缺少刪除填充的信息。而且你在欺騙自己,因爲即使oppa_dec實際上以9個零字節結尾,顯示的值看起來也是一樣的。改爲使用合理的填充方案。 – 2013-03-10 02:23:44
這是一個答案,而不是評論,GregS(做到這一點,否則我會發布它,包括你的名字在最後:P) – 2013-03-10 23:06:30