当前位置: 首页 > 知识库问答 >
问题:

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

景岳
2023-03-14

之前我是在没有加密的情况下将数据存储在数据库中。但现在我需要加密现有数据和新插入的数据。

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

更新tableSETpost_id=AES_ENCRYPT('poster','mykey');

它运行良好,我能够使用AES_DECRYPT()方法解密数据。

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

$CONFIG['Encryption_Key']='MyKey';//在config.php页面中。

和加密值

$encrypted_string=$this->encrypt->encode($poster_id);

这也是工作良好,因为我能够加密新的插入数据到数据库。

但是当我尝试使用AES_DECRYPT()函数解密所有的数据(既有的数据也有新插入的数据)时,旧数据的值是正确的,而新插入的数据的值是空的。请对此提出建议或给出任何替代的解决方案。

谢谢.

共有1个答案

柯鸿云
2023-03-14

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

这就是你错的地方。

CodeIgniter的encryption类不仅仅对数据进行赤裸裸的AES加密。防范自适应选择密文攻击需要采取许多步骤:

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

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

 类似资料:
  • 问题内容: 我有三个表来定义用户: 我想创建一个对应用程序中的其他用户具有一定访问权限的中间层用户。为了确定已登录的用户可以访问哪些用户,我使用了如下子查询: 当前,我将子查询字符串存储在变量中,然后每次需要拉出用户列表时,将其动态插入到外部查询中。完成此操作后,我想到“最好只存储实际s 的字符串”。 因此,与其将其存储在变量中… …我实际上是执行查询并以这种方式存储结果… 然后,当我需要拉一小部

  • 前面小节介绍了如何存储密码,但是有的时候,我们想把一些敏感数据加密后存储起来,在将来的某个时候,随需将它们解密出来,此时我们应该在选用对称加密算法来满足我们的需求。 base64加解密 如果Web应用足够简单,数据的安全性没有那么严格的要求,那么可以采用一种比较简单的加解密方法是base64,这种方式实现起来比较简单,Go语言的base64包已经很好的支持了这个,请看下面的例子: package

  • 现在数据被加密保存在数据库中...问题是我们仍然需要能够在MySQL上使用aes_decrypt来解密信息,而它返回null。 在CakePHP 3上,config/app.php: 然后使用: 我的MYSQL表: 注意:地址和注释只是为了测试。 然后,在CakePHP上,我创建了一个自定义数据库类型: 最后,将加密列映射到注册类型,就这样,从现在开始,所有的事情都将自动处理。

  • 我正在做一个包含子项目的Node.js项目。一个子项目将有一个Mongodb数据库,Mongoose将用于包装和查询DB。但问题是 > mongoose不允许在单个mongoose实例中使用多个数据库,因为模型是在一个连接上构建的。 要使用多个mongoose实例,Node.js不允许多个模块实例,因为它在中有缓存系统。我知道在node.js中禁用模块缓存,但我认为这不是一个好的解决方案,因为它只

  • 我正在android studio上制作一个支持Firebase的应用程序。它当前将有关用户的信息存储在Firebase数据库中自己上传的部分中。它存储在使用其Firebase帐户的uuid的结构中,并将其所有上载内容放在该结构下,即图片、提醒、注释和密码。 我想加密数据库中的密码部分,这样即使我也无法读取它。当我说密码部分时,我指的是应用程序中允许用户为其他事情存储自己新生成的密码的部分;不是他

  • 问题内容: 在名为News的模型中 在Javascript中,我将AJAX post方法与formdata一起使用。我要设置这个区域。 上面我在JS中编写的代码是这样设置的 和上面的代码我将进入控制器。但是,尽管至少我选择了两个区域,但它始终返回0条记录。 我的Ajax方法在上面。我在哪里犯错? 提前致谢。 问题答案: 如果您用于发送数据,则需要将每个单独的名称/值发送给。由于它是一个集合,因此您