PHP mcrypt_encrypt/mcrypt_decrypt问题,返回不同的值

rom*_*ish 5 php encryption hash

我正在寻找答案,但在这里找不到.如果已经提出这个问题,请原谅.

我有一个简单的代码加密和解密字符串,字符串看起来一样,但是当使用==比较它们时它们似乎不一样,所以哈希也是不同的...

这是我的代码:

$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";
Run Code Online (Sandbox Code Playgroud)

在页面上:

肆无忌惮的NOPE

请告诉我我做错了什么.

谢谢!

小智 2

\n

AES 始终以 16 字节块的形式进行加密。显然,\n mcrypt_encrypt用零字节填充字符串,直到它是 16 的倍数。mcrypt_decrypt尽职尽责地解密了该字符串,但缺少\n 信息来删除填充。你在欺骗自己,因为显示的值看起来是一样的,即使oppa_dec\n 实际上以 9 个零字节结尾。请改用合理的填充方案\n。\xe2\x80\x93格雷格

\n
\n\n

要删除这些空字符,您可以使用rtrim函数。运行解密后的输出后,它应该是相等的。

\n