便携式数据库,用于存储机密
-
23-08-2019 - |
题
我正在开发一个应用程序,需要存储机密数据库中。
我需要一个便携式数据库(如火鸟,源码等)这里的数据将被存放加密或者受密码保护或两个...
让我们把 作为例 我想创建一个密码管理。 我会需要的商店密码在数据库。我习惯于使用嵌入火鸟,但不适用于机密数据。
另一个解决方案是以使用的数据库自然和加密的数据库文件的时候我没有连接到文件,但我不肯定安全或性能的影响。
什么是最好的方法,你建议?
解决方案
有一个名为源码-隐窝项目。这应该是你最好的选择。源码分贝与加密磁盘上的所有数据。
其他提示
您还可以看看 SQL Server Compact 版本,它只需要一个 DLL,并将数据存储在单个文件中,就像 SQLite 或 Access、Firebird 等一样。
它还具有内置的加密功能。
一些参考:
- SQL Server Compact 的安全性和加密
- 有关使用 SQL Server Compact Edition 的教程 (页面下方的第二和第三部分)。
密码加密
查看我对你的回答 其他问题SO.
我同意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();
不隶属于 StackOverflow