【发布时间】:2010-11-18 13:49:29
【问题描述】:
在 .Net/C# 中加密 SQLite 数据库文件的最佳方法是什么?我正在使用sqlite-dotnet2 包装器。
有像SQLite Encryption Extension 和SQLite Crypt 这样的工具,但它们都是非免费的,而我的项目是在 GPL 下。
我想到的天真的方法是让 SQLite 处理一个临时文件,然后在程序退出时对其进行加密,并覆盖(清零)原始文件。明显的缺点是如果程序崩溃(并且在运行时),纯文本数据库是可访问的。
有没有更好的方法来解决这个问题?我可以将加密流传递给包装器(而不是使用 SQLiteConnection.CreateFile)吗?
[编辑] 也许我想多了。在连接字符串中使用密码选项就足够了吗?在这种情况下,文件是否会被正确加密(或者是一些较弱的保护)?
【问题讨论】:
-
> 有 SQLite Encryption Extension 和 SQLite Crypt 之类的工具,但两者都是非免费的,而我的项目属于 GPL。我们还没有尝试将它与 .NET 一起使用,但我在 [SQLCipher][1] 的开发团队中,它基本上是提供透明数据库加密的免费且不受阻碍的 SQLite 版本。我建议将它用于需要嵌入式数据库的移动和/或独立应用程序设置。 [1]:github.com/sjlombardo/sqlcipher
-
...和 .NET 版本的 SQLCipher 现在也是商业产品 :(
标签: c# .net file sqlite encryption