之前我在没有加密的数据库中存储数据。但现在我需要加密现有数据以及新插入的数据。
所以我在这做了什么: 为了加密现有数据,我使用了AES_ENCRYPT()方法,
更新table
设置poster_id
= AES_ENCRYPT('海报',' Mykey');
工作正常,我可以使用AES_DECRYPT()方法解析数据。
在代码中,我做了以下更改:
$ config [' encryption_key'] =' Mykey&#39 ;; //在config.php页面中。
和使用
加密的值$ encrypted_string = $ this-> encrypt-> encode($ poster_id);
这也正常,因为我能够加密新的数据库插入数据。
但是当我试图通过使用AES_DECRYPT()函数(现有数据和新插入的数据)来尝试解除所有数据时。我得到旧数据的正确值并获得新插入数据的Null值。 请在此建议或提供任何替代解决方案。
谢谢。
答案 0 :(得分:0)
这就是我的工作:为了加密现有数据,我使用了AES_ENCRYPT()方法,
那是你出错的地方。
CodeIgniter的Encryption
类不仅对数据进行裸AES加密。需要a lot of steps to protect against adaptive chosen-ciphertext attacks:
AES_ENCRYPT()
仅提供ECB)进行加密。它们彼此根本不兼容,正确实现的是CodeIgniter,而不是MySQL。您需要CodeIgniter的设计。