Php MySQL和Codeigniter项目中的数据加密和解密

Php MySQL和Codeigniter项目中的数据加密和解密,php,mysql,encryption,Php,Mysql,Encryption,早些时候,我在数据库中存储数据时没有加密。但是现在我需要加密现有数据和新插入的数据 我所做的是: 对于现有数据的加密,我使用了AES_加密方法 更新表集poster_id=AES_加密'poster','Mykey' 它工作正常,我能够使用AES_解密方法解密数据 在代码中,我做了如下更改: $config['encryption_key']='Mykey'//在config.php页面中 并使用 $encrypted\u string=$this->encrypt->encode$poster

早些时候,我在数据库中存储数据时没有加密。但是现在我需要加密现有数据和新插入的数据

我所做的是: 对于现有数据的加密,我使用了AES_加密方法

更新表集poster_id=AES_加密'poster','Mykey'

它工作正常,我能够使用AES_解密方法解密数据

在代码中,我做了如下更改:

$config['encryption_key']='Mykey'//在config.php页面中

并使用

$encrypted\u string=$this->encrypt->encode$poster\u id

这也可以很好地工作,因为我能够将新的插入数据加密到数据库中

但是,当我现在尝试使用AES_DECRYPT函数对现有数据和新插入的数据进行解密时,旧数据的值是正确的,新插入的数据的值是空的。 请对此提出建议或给出任何替代解决方案

多谢各位

所以我做的是:对于现有数据的加密,我使用了AES_加密方法

那就是你错的地方

CodeIgniter的加密类不只是对数据进行裸AES加密。需要:

HKDF-SHA256用于将您的密钥拆分为两个密钥,一个用于AES,另一个用于HMAC-SHA256。 数据使用AES-CBC MySQL加密,AES_ENCRYPT仅提供随机IV。 IV和密文通过HMAC-SHA256进行身份验证。
它们只是彼此不兼容,正确实现的是CodeIgniter,而不是MySQL。您需要CodeIgniter的设计。

您新的基于PHP的加密无法工作。但很难说为什么,因为您没有发布任何实际代码。如果检测到无效数据,AES_DECRYPT将返回NULL。听起来codeigniter生成了一个错误的加密为什么你认为$this->encrypt->encode和mysql的AES_encrypt是一样的?是的,两者都不一样。因此,您可以建议什么解决方案。AES_ENCRYPT支持CBC,可以这样设置:set@@SESSION.block_encryption_mode='AES-256-CBC'@redsd AES-CBC仍然不够好。看见