【问题标题】:Implementing SQL AES ENCRYPTION into SQLite using PHP使用 PHP 在 SQLite 中实现 SQL AES ENCRYPTION
【发布时间】:2012-10-03 16:20:14
【问题描述】:

是否可以使用 PHP 将 SQL AES_ENCRYPT/AES_DECRYPT 实现到 SQLite 中? 例如我有一个 PHP 代码:

$SQL = "INSERT INTO parent (Request, Column1, Column2) VALUES ('$Request',AES_ENCRYPT('$Col1','$key'),AES_ENCRYPT('$Col2','$key'))";

这个查询可以在 SQL 中使用,但是是否可以在 SQLite 中使用相同的查询?

【问题讨论】:

  • 您的意思是“此查询在 MySQL 中有效”。 SQLite 没有内置的 AES 加密功能,因此您必须发送加密数据。
  • 是的,这个查询在 MySQL 中有效。所以我不能在 SQLite 中使用这个 AES_ENCRYPT 吗?
  • 那么我怎样才能将 AES 用于 SQLite 呢?
  • PHP端数据加解密。将加密数据存储在 SQLite BLOB 中。
  • 看看 SQLCipher - 它可能是你真正需要的。

标签: php sql sqlite aes


【解决方案1】:

嗯,大约 10 分钟前,我用Ubuntu 16.04 LTS 64bit 在我的惠普笔记本电脑上安装了PHP 7.2.2。您无需获得SQLite 加密扩展 (SEE) 的许可证。在现有的 PHP 扩展之上,我添加了一些带有 AESSQLite 函数的 C 文件,用于加密/解密寻呼机。它运行良好,现在我将尝试使用 Intel i5 内置 AES 功能使其运行 - 充分利用硬件本身。 现在,要打开一个 sqlite 数据库,我可以使用以下命令:

class MyDB extends SQLite3 {
      function __construct(){
        $this->open('sqlite3.db',SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, 'your_password_here');
      }
}

加密整个数据库绝对是最好的解决方案。 给我留言了解详情。我可能很快就会发布这个解决方案。

【讨论】:

  • 嗨。当我使用它时,它说文件不是数据库。有什么想法吗?
【解决方案2】:

我想说你有两个选择:

  • 在 PHP 级别加密您的值并将它们存储为 BLOB 或 base64 字符串

  • 执行以下命令加密整个数据库(就像任何其他常规 SQL 命令一样):PRAGMA hexkey='0x_your_key_in_hex_format'。当您打开数据库以运行 SELECT 查询时,不要忘记做同样的事情。 Here是官方文档。

【讨论】:

  • 我做了一个 PHP AEE 加密,它可以工作,但我需要使用 AES 作为 SQL 查询,所以感谢您的回复,我将尝试 SQLite 加密扩展,如果有任何问题我会回来。
  • 您好 mbarthelemy,您有任何关于如何在 PHP 中为 sqlite 使用此 PRAGMA 的示例吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-15
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
相关资源
最近更新 更多