gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 17:55:29 25 4
gpt4 key购买 nike

之前我将数据存储在数据库中而不加密。但现在我需要加密现有数据以及新插入的数据。

所以我做了什么:为了加密现有数据,我使用了 AES_ENCRYPT() 方法,

更新 SET poster_id = AES_ENCRYPT('poster','Mykey') ;

它工作正常,我能够使用 AES_DECRYPT() 方法解密数据。

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

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

并使用加密值

$encrypted_string = $this->加密->编码($poster_id);

这也工作正常,因为我能够加密新数据将数据插入数据库。

但是当我现在尝试使用 AES_DECRYPT() 函数(现有的和新插入的数据)解密所有数据时。我正在为旧数据获取正确的值,并为新插入的数据获取 Null 值。请对此提出建议或提供任何替代解决方案。

谢谢。

最佳答案

So here What i did: For encryption of existing data I used AES_ENCRYPT() method ,

这就是你出错的地方。

CodeIgniter 的 Encryption 类不仅仅对数据进行裸露的 AES 加密。需要a lot of steps to protect against adaptive chosen-ciphertext attacks :

  • HKDF-SHA256 用于将您的 key 拆分为两个 key (一个用于 AES,另一个用于 HMAC-SHA256)。
  • 数据使用 AES-CBC(MySQL 的 AES_ENCRYPT() 仅提供 ECB )和随机 IV 进行加密。
  • IV 和密文通过 HMAC-SHA256 进行身份验证。

它们只是彼此不兼容,正确实现的是 CodeIgniter,而不是 MySQL。您想要 CodeIgniter 的设计。

关于php - MySQL和Codeigniter项目中数据的加解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48892352/

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