gpt4 book ai didi

php - 如何在 PHP 中进行 AES256 解密?

转载 作者:可可西里 更新时间:2023-11-01 13:59:03 26 4
gpt4 key购买 nike

我有一段加密的文本需要解密。它使用 AES-256-CBC 加密。我有加密的文本、 key 和 iv。但是,无论我尝试什么,我似乎都无法让它发挥作用。

互联网建议 mcrypt 的 Rijndael 密码应该能够做到这一点,所以这是我现在拥有的:

function decrypt_data($data, $iv, $key) {
$cypher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');

// initialize encryption handle
if (mcrypt_generic_init($cypher, $key, $iv) != -1) {
// decrypt
$decrypted = mdecrypt_generic($cypher, $data);

// clean up
mcrypt_generic_deinit($cypher);
mcrypt_module_close($cypher);

return $decrypted;
}

return false;
}

现在我收到 2 个警告,输出是乱码:

Warning: mcrypt_generic_init() [function.mcrypt-generic-init]: Key size too large; supplied length: 64, max: 32 in /var/www/includes/function.decrypt_data.php on line 8
Warning: mcrypt_generic_init() [function.mcrypt-generic-init]: Iv size incorrect; supplied length: 32, needed: 16 in /var/www/includes/function.decrypt_data.php on line 8

如有任何帮助,我们将不胜感激。

最佳答案

我对这些东西不是很熟悉,但似乎尝试用 MCRYPT_RIJNDAEL_256 代替 MCRYPT_RIJNDAEL_128 显然是下一步...

编辑:您是对的——这不是您需要的。 MCRYPT_RIJNDAEL_128 实际上是正确的选择。根据您提供的链接,您的 key 和 IV 的长度是应有的两倍:

// How do you do 256-bit AES encryption in PHP vs. 128-bit AES encryption???
// The answer is: Give it a key that's 32 bytes long as opposed to 16 bytes long.
// For example:
$key256 = '12345678901234561234567890123456';
$key128 = '1234567890123456';

// Here's our 128-bit IV which is used for both 256-bit and 128-bit keys.
$iv = '1234567890123456';

关于php - 如何在 PHP 中进行 AES256 解密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1628138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com