SQLite - Создание зашифрованных баз данных. Как...? - PullRequest
5 голосов
/ 05 января 2011

Как я могу создать зашифрованную базу данных SQLite, которая фактически остается зашифрованной или которую я могу открыть позже.

Я использовал SQLite2009 Pro Enterprise Manager, который «может» создавать зашифрованные базы данных, но после ввода ключа шифрования они больше не открываются.

Я использовал SQLiteManager из SQLabs для создания зашифрованной базы данных, и хотя ее можно открыть впоследствии, это можно сделать из любого инструмента или кода управления SQLite, не требуя введенного мной ключа.

Итак, как, черт возьми, вы можете создать зашифрованную базу данных SQLite, пожалуйста?

Я планирую использовать базу данных в приложении Adobe Flex.

Спасибо.

Ответы [ 3 ]

5 голосов
/ 05 января 2011

SQLite поддерживает интеграцию шифрования, но стандартный дистрибутив SQLite с открытым исходным кодом не поддерживает шифрование. Зашифрованные версии SQLite будут переносимы только между разными клиентами или инструментами, если все они будут использовать одно и то же расширение шифрования.

Разработчики SQLite сами распространяют коммерческую версию SQLite, которая прозрачно поддерживает шифрование. Когда этот модуль используется для шифрования, шифрование работает на разных платформах, и каждый байт, записанный в файл, шифруется. В зашифрованном файле SQLite, хранящемся на диске, нет ничего, что указывало бы на то, что это база данных SQLite. Многие инструменты поддерживают эту реализацию, позволяя вам поместить коммерческий файл sqlite.dll вместо открытого.

Существуют также сторонние расширения, поддерживающие шифрование. Например, System.Data.SQLite поддерживает шифрование, но использует для этого библиотеки .NET, поэтому зашифрованный System.Data.SQLite может быть прочитан только другим клиентом, который также использует System.Data.SQLite (это специально уважение к основным разработчикам SQLite и их коммерческому продукту).

Adobe AIR 1.5 поддерживает шифрование. Я точно не знаю, какой механизм используется, я искал и не мог найти ответ. Возможно, что зашифрованная база данных AIR может быть прочитана только с помощью AIR. Я точно не знаю, в любом случае. Тем не менее, вот хорошая отправная точка для изучения работы с зашифрованными базами данных - AIR:

http://probertson.com/articles/2008/11/18/air-1_5-encrypted-sqlite-database-how-to/

3 голосов
/ 05 января 2011

Re: шифрование существующей базы данных

"Из любопытства, можно ли создать базу данных, которая была создана без шифрования, впоследствии, когда в ней уже есть все виды данных?"

Вы не можете зашифровать незашифрованную базу данных напрямую.Вы можете изменить ключ шифрования базы данных, используя метод SQLConnection.reencrypt (), но он работает только с уже зашифрованными базами данных:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/data/SQLConnection.html#reencrypt()

Однако в качестве обходного пути вы можете открыть несколькобазы данных в пределах одного SQLConnection, и вы можете копировать данные и структуру из одной в другую.Я на самом деле написал служебный класс, который использует эту технику, чтобы позволить вам зашифровать незашифрованные БД:

https://github.com/probertson/air-sqlite/blob/DB-copy-dev/src/com/probertson/data/DBCopier.as

1 голос
/ 06 января 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...