Реализация шифрования 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');
}
}
Шифрование всей базы данных, безусловно, является лучшим решением. Напишите мне сообщение для деталей. Я, вероятно, скоро опубликую это решение.