ZeosDb: шифрование SQLite

Я использую компонент ZeosDB для доступа к базе данных sqlite. Он отлично работает на незашифрованной базе данных.

В зашифрованной базе данных я получаю: файл зашифрован или не является базой данных. Eaven, если я установлю пароль.

Является ли DLL-файл, который я использую, неправильным? Я использую последнюю dll с официальной страницы. Она не поддерживает шифрование по умолчанию?


person opc0de    schedule 26.11.2012    source источник
comment
Как вы шифруете БД? Вы используете какую-то студию управления БД для ее шифрования?   -  person iPath ツ    schedule 26.11.2012
comment
да.Navicat.предложения?   -  person opc0de    schedule 26.11.2012


Ответы (2)


В SQLite3 существует несколько схем шифрования.

Среди них у вас есть:

  • Официальная бесплатная библиотека шифрования от авторов SQLite3 под названием SQLite Encryption Extension (SEE): просто заплатите и используйте dll и измените инициализацию, чтобы установить ключ базы данных;
  • SQLCipher с открытым исходным кодом;
  • оболочка WXSQlite3;
  • Для Delphi наша статическая версия с открытым исходным кодом включена в mORMot (с пользовательское шифрование) - статическое связывание позволяет вам не использовать внешний sqlite3.dll, что упрощает развертывание и поддержку - он позволяет легко переключаться на MS SQL, Oracle или OleDB/ODBC с тем же исходным кодом от Delphi 5 до XE3 и имеет отличную скорость;
  • См. ссылку выше.

Уровень ZeosDB SQLite3 не справляется ни с одним из них.

Драйвер SQlite3 API (модуль ZPlainSqLiteDriver) не содержит шифрования. Так что вам придется изменить его. Или переключитесь на другую оболочку, которая поддерживает API шифрования.

person Arnaud Bouchez    schedule 26.11.2012

Недавно у меня была такая же проблема (с использованием UniDac). Официальные библиотеки DLL не поддерживают шифрование. Есть пара библиотек, которые включают шифрование, но они не взаимозаменяемы. т.е. БД, зашифрованная с помощью одной DLL SQLite, не может быть расшифрована с помощью другого дистрибутива. Я думаю, что ваш случай такой же.

Мое решение было:

  • Загружен пакет ...static bunde... ( x86, x64) для .NET — это поддерживает шифрование (я думаю, Windows DPAPI)
  • System.Data.SQLite.dll переименована в SQLite3.dll -> эта DLL является родной DLL и поддерживает enc/dec.
  • В папке своей СУБД заменил SQLite DLL на извлеченную выше

Таким образом, СУБД шифрует с помощью новой DLL, а ваша программа может расшифровать ее с помощью той же версии DLL.

Вы также можете ознакомиться с:

Примечания:

person iPath ツ    schedule 26.11.2012