Шифровать базу данных SQLite в C # - PullRequest
17 голосов
/ 11 августа 2009

Каков наилучший подход к шифрованию файла базы данных SQLite в .Net / C #? Я использую sqlite-dotnet2 упаковщик.

Существуют такие инструменты, как Расширение шифрования SQLite и SQLite Crypt , но оба они бесплатны, пока мой проект находится под лицензией GPL.

Наивный подход, который я подумал использовать, состоял в том, чтобы позволить SQLite обрабатывать временный файл, затем шифровать его при выходе из программы и перезаписывать (обнулять) исходный. Очевидным недостатком является то, что в случае сбоя программы (и во время ее работы) доступна БД в виде простого текста.

Есть ли лучший способ приблизиться к этому? Могу ли я передать зашифрованный поток оболочке (вместо использования SQLiteConnection.CreateFile)?

[править] Может быть, я обдумываю это. Достаточно ли использовать опцию Пароль в строке подключения? Будет ли файл в этом случае должным образом зашифрован (или это слабая защита)?

Ответы [ 3 ]

22 голосов
/ 11 августа 2009

Я рекомендую использовать оболочку System.Data.Sqlite, которая включает шифрование. Он отлично работает, прост в использовании и является полной реализацией ADO.Net. Вы можете получить оболочку от https://system.data.sqlite.org,, и разработчик описывает, как использовать шифрование на этом форуме, по адресу: https://web.archive.org/web/20100207030625/http://sqlite.phxsoftware.com/forums/t/130.aspx. Подсказка - вы просто устанавливаете свойство пароля. Он также описывает, как он выполняет шифрование с помощью Microsoft Crypto API в другом месте на форуме.

7 голосов
/ 06 октября 2009

Взгляните на:

http://zetetic.net/software/sqlcipher

Это открытый исходный код.

Вы также можете проверить код для wxsqlite3.

5 голосов
/ 12 августа 2009

Я бы попробовал http://code.google.com/p/csharp-sqlite/, это переписать SQLite 3.6.16 в C #, под лицензией MIT. Я полагаю, это будет легко настроить.

РЕДАКТИРОВАТЬ: Как упоминалось в примечании ниже, он также поддерживает sqlcipher шифрование

ОБНОВЛЕНИЕ: С тех пор, как Google Code перешел на чтение, проект перешел на собственный веб-сайт https://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki

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