在 CBC 模式下使用 AES 解密文本
我有这段代码
$td = \mcrypt_module_open(\MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CBC, '');
\mcrypt_generic_init($td, '12345678901234561234567890123456', '12345678901234567890123456789012');
echo mdecrypt_generic(
$td,
\mcrypt_generic($td, "Testing")
);
,但结果是ˆ]Ië{ŒÕÌe}Q™‡ÿòØØÀÿÙ®»/› 为什么文本没有被正确解密?我还在正确的位置尝试了 base_64 编码和解码,所以我认为问题可能在其他地方。
I have this code
$td = \mcrypt_module_open(\MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CBC, '');
\mcrypt_generic_init($td, '12345678901234561234567890123456', '12345678901234567890123456789012');
echo mdecrypt_generic(
$td,
\mcrypt_generic($td, "Testing")
);
But the result is ˆ]Ië{ŒÕÌe}Q™‡ÿòø¬ÀÿÙ®»/›
Why isnt the text being properly decrypted? I also tried base_64 encoding and decoding in the right places so i think the problem might be elsewhere.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
解密前应重新初始化,即再次调用crypt_generic_init。
另外,加密完成后,您应该调用 mcrypt_generic_deinit。
You should reinitialize before decryption, i.e. call crypt_generic_init again.
Also, after encryption is finished, you should call mcrypt_generic_deinit.
这只是一个大胆的猜测,但由于您使用的是 CBC 模式,因此您可能需要重置 iv 才能解密。
It's just a wild guess, but since you're using CBC mode, you probably need to reset the iv before you can decrypt it.