在 CBC 模式下使用 AES 解密文本

发布于 2024-10-11 19:27:06 字数 461 浏览 4 评论 0原文

我有这段代码

$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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一个人的旅程 2024-10-18 19:27:07

解密前应重新初始化,即再次调用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.

带刺的爱情 2024-10-18 19:27:07

这只是一个大胆的猜测,但由于您使用的是 CBC 模式,因此您可能需要重置 iv 才能解密。

$td = \mcrypt_module_open(\MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CBC, '');
$key = '12345678901234561234567890123456';
$iv =  '12345678901234567890123456789012';

\mcrypt_generic_init($td, $key, $iv);
$encrypted = \mcrypt_generic($td, "Testing");

\mcrypt_generic_init($td, $key, $iv);
echo \mdecrypt_generic($td, $encrypted);

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.

$td = \mcrypt_module_open(\MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CBC, '');
$key = '12345678901234561234567890123456';
$iv =  '12345678901234567890123456789012';

\mcrypt_generic_init($td, $key, $iv);
$encrypted = \mcrypt_generic($td, "Testing");

\mcrypt_generic_init($td, $key, $iv);
echo \mdecrypt_generic($td, $encrypted);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文