Реализация шифрования SQL AES в SQLite с использованием PHP

Можно ли реализовать SQL AES_ENCRYPT/AES_DECRYPT в SQLite с использованием PHP? Например, у меня есть код PHP:

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

и этот запрос работает в SQL, но возможно ли использовать этот же запрос в SQLite?

2 ответа

Решение

Я бы сказал, что у вас есть 2 варианта:

  • зашифруйте ваши значения на уровне PHP и сохраните их как BLOB или строки base64

  • зашифруйте всю базу данных, выполнив следующую команду (как и любую другую обычную команду SQL): PRAGMA hexkey = '0x_your_key_in_hex_format'. Не забудьте сделать то же самое, когда вы открываете базу данных для выполнения запросов SELECT. Вот официальная документация.

Ну минут 10 назад я закончил установку PHP 7.2.2 на моем ноутбуке HP с Ubuntu 16.04 LTS 64bit, Вам не нужно приобретать лицензию на SQLite Расширение шифрования (SEE). Поверх существующих PHP расширение я добавил несколько C файлы с AES а также SQLite функции для en/ расшифровки пейджера. Это работает хорошо, и теперь я попытаюсь заставить его работать, используя встроенную функциональность AES Intel i5 - чтобы получить максимум от самого оборудования. Теперь, чтобы открыть базу данных sqlite, я могу использовать следующее:

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

Шифрование всей базы данных, безусловно, является лучшим решением. Напишите мне сообщение для деталей. Я, вероятно, скоро опубликую это решение.

Другие вопросы по тегам