SQLite с шифрованием / защитой паролем - PullRequest
118 голосов
/ 15 апреля 2011

Я только учусь использовать SQLite, и мне было любопытно, если это возможно:

  1. Шифрование файла базы данных?

  2. Защита паролем открытия базы данных?

PS.Я знаю, что существует это «Расширение шифрования SQLite (SEE)», но согласно документации «SEE - это лицензионное программное обеспечение…» и «Стоимость бессрочной лицензии на исходный код для SEE составляет 2000 долларов США».

Ответы [ 11 ]

0 голосов
/ 22 февраля 2016

Вы можете использовать подпрограммы создания функций SQLite ( Руководство по PHP ):

$db_obj->sqliteCreateFunction('Encrypt', 'MyEncryptFunction', 2);
$db_obj->sqliteCreateFunction('Decrypt', 'MyDecryptFunction', 2);

При вставке данных вы можете напрямую использовать функцию шифрования и вставлять зашифрованные данные или использовать пользовательскую функцию и передавать незашифрованные данные:

$insert_obj = $db_obj->prepare('INSERT INTO table (Clear, Encrypted) ' .
 'VALUES (:clear, Encrypt(:data, "' . $passwordhash_str . '"))');

При получении данных вы также можете использовать функцию поиска SQL:

$select_obj = $db_obj->prepare('SELECT Clear, ' .
 'Decrypt(Encrypted, "' . $passwordhash_str . '") AS PlainText FROM table ' .
 'WHERE PlainText LIKE :searchterm');
...