You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter v4.1.4 AES加密createKey方法未生成密钥报错问题咨询

问题原因

你对Encryption::createKey()的使用方式和配置赋值逻辑存在两处错误:

  • 你在配置文件中定义的$key = \CodeIgniter\Encryption\Encryption::createKey();是局部变量,CodeIgniter读取加密密钥时取的是Encryption配置类的公共属性$key,你没有将生成的密钥赋值给对应属性,系统自然读取不到有效密钥。
  • createKey()方法作用是一次性生成符合要求的二进制密钥,不能放在配置文件中动态调用:每次请求都会生成新密钥,会导致之前加密的内容无法解密,且二进制密钥不能直接写入配置文件存储。

正确配置步骤

  1. 先生成可用的base64编码密钥:你可以在任意控制器临时加一行代码,访问一次即可得到密钥字符串:
echo base64_encode(\CodeIgniter\Encryption\Encryption::createKey());
  1. 打开app/Config/Encryption.php文件,修改配置类的公共属性,把上一步得到的密钥填进去,删除你之前自己加的局部$key变量代码:
class Encryption extends BaseConfig
{
    // 粘贴你生成的密钥到引号内
    public $key = '你生成的base64编码密钥';
    
    public $driver = 'AES';
    // 其他配置保持默认即可,和你使用的AES位数匹配就行
    public $blockSize = 256;
    public $digest = 'SHA512';
}
  1. 配置完成后重启服务再测试即可,报错会直接消失。

注意事项

密钥生成后固定存储即可,不要在生产环境动态生成密钥,会导致所有历史加密数据无法正常解密。

内容的提问来源于stack exchange,提问作者Reza Angkasa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:36:03