gpt4 book ai didi

php - mcrypt_encrypt 初始化失败

转载 作者:可可西里 更新时间:2023-10-31 22:57:05 24 4
gpt4 key购买 nike

我正尝试在 CBC 模式下使用 256 位 key 使用 Rijndael 密码对 PHP 中的某些数据进行加密,但由于某种原因,我收到以下错误消息:

mcrypt_encrypt() 模块初始化失败

我的代码:

    $hashKey = hash('sha256',$key);
$iv = hash('sha256',$hashKey);

// ------Cipher-------------key-------------Data-------------Mode---------IV--
$encryptedQuestion = base64_encode(mcrypt_encrypt('MCRYPT_RIJNDAEL_256', $hashKey , $_POST['question'], MCRYPT_MODE_CBC, $iv));

谁能看出这有什么问题吗?

最佳答案

我发现代码存在一些问题:

  1. 您的$iv 不应依赖于$hashKey;相反,您应该使用 mcrypt_create_iv() 单独创建它。

  2. 您的 $hashKey 应该是二进制的而不是文本的。

  3. MCRYPT_RIJNDAEL_256 是常量,不应作为字符串传递。

下面的代码比你的更冗长,但它应该让你深入了解加密某些东西所需的步骤:

$crypto = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CBC, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($crypto), MCRYPT_DEV_URANDOM);

$hkey = hash('sha256', $key, true);

mcrypt_generic_init($handle, $hkey, $iv);

$enc_question = mcrypt_generic($handle, $_POST['question']);

mcrypt_generic_deinit($handle);
mcrypt_module_close($handle);

我也省略了任何错误检查。

关于php - mcrypt_encrypt 初始化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12266519/

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