Вопрос

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

Мне нужна переносимая база данных (например, Firebird, Sqlite и т. д.), где данные будут храниться в зашифрованном виде или защищены паролем, или и то, и другое...

Давайте как пример что я хочу создать менеджер паролей. Мне нужно будет сохранить эти пароли в базе данных.Я привык использовать Embed Firebird, но не для секретных данных.

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

Какой лучший метод вы рекомендуете?

Это было полезно?

Решение

Есть проект под названием sqlite-крипта.Что должно быть вашим лучшим выбором.sqlite db со всеми зашифрованными данными на диске.

Другие советы

Вы также можете взглянуть на версию SQL Server Compact, для которой требуется только DLL и которая будет хранить данные в одном файле, как SQLite или Access, Firebird и т. д.

Он также имеет встроенные возможности шифрования.

Некоторые ссылки:

Шифрование пароля

Смотри мой ответ на твой другой вопрос, т.к..

Честно?Использовать TrueCrypt или Кипасс.

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

Встроенная поддержка REALbasic для работы с зашифрованными базами данных SQLite хорошо сработала для меня в нескольких проектах.

Я настоятельно рекомендую вам проверить SQLCipher (полная информация, я один из разработчиков!) Это бесплатная реализация прозрачного шифрования на уровне страниц для SQLite с открытым исходным кодом.Реализация достаточно надежна, находится в активной разработке и очень проста в использовании (условно говоря).

Я поддерживаю предложение использовать KeePass.Это отличное хранилище конфиденциальных данных, предоставляющее довольно хороший API.Вот пример чтения стандартной базы данных Keypass 2:

var dbpath = @"C:\path\to\passwords.kdbx";
var masterpw = "Your$uper$tr0ngMst3rP@ssw0rd";

var ioConnInfo = new IOConnectionInfo { Path = dbpath };
var compKey = new CompositeKey();
compKey.AddUserKey(new KcpPassword(masterpw));

var db = new KeePassLib.PwDatabase();
db.Open(ioConnInfo, compKey, null);

var kpdata = from entry in db.RootGroup.GetEntries(true)
                select new
                {
                    Group = entry.ParentGroup.Name,
                    Title = entry.Strings.ReadSafe("Title"),
                    Username = entry.Strings.ReadSafe("UserName"),
                    Password = entry.Strings.ReadSafe("Password"),
                    URL = entry.Strings.ReadSafe("URL"),
                    Notes = entry.Strings.ReadSafe("Notes")

                };                                      
db.Close();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top