繁体   English   中英

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

[英]PHP mcrypt_encrypt/mcrypt_decrypt issue, returns a different value

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

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

这是我的代码:

$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";

在页面上:

肆无忌惮的NOPE

请告诉我我做错了什么。

谢谢!

AES总是以16字节的块加密事物。 显然mcrypt_encrypt用零字节mcrypt_encrypt字符串,直到它是16的mcrypt_decrypt尽职地解密这个但缺少删除填充的信息。 而你自欺欺人,因为即使oppa_dec实际上以9个零字节结束,显示的值看起来也是一样的。 请使用合理的填充方案。 - 格雷格

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM