C# 用C加密SQLite数据库#

C# 用C加密SQLite数据库#,c#,.net,file,sqlite,encryption,C#,.net,File,Sqlite,Encryption,在.Net/C#中加密SQLite数据库文件的最佳方法是什么?我用的是包装纸 有像和这样的工具,但它们都是非免费的,而我的项目是在GPL下进行的 我想使用的最简单的方法是让SQLite处理一个临时文件,然后在程序退出时对其进行加密,并覆盖(归零)原始文件。明显的缺点是,如果程序崩溃(并且在运行时),可以访问纯文本数据库 有没有更好的办法?我是否可以将加密流传递给包装器(而不是使用SQLiteConnection.CreateFile) [编辑]也许我想得太多了。在连接字符串中使用密码选项是否足够

在.Net/C#中加密SQLite数据库文件的最佳方法是什么?我用的是包装纸

有像和这样的工具,但它们都是非免费的,而我的项目是在GPL下进行的

我想使用的最简单的方法是让SQLite处理一个临时文件,然后在程序退出时对其进行加密,并覆盖(归零)原始文件。明显的缺点是,如果程序崩溃(并且在运行时),可以访问纯文本数据库

有没有更好的办法?我是否可以将加密流传递给包装器(而不是使用SQLiteConnection.CreateFile)


[编辑]也许我想得太多了。在连接字符串中使用密码选项是否足够?在这种情况下,文件会被正确加密吗(或者它是某种较弱的保护)?

我建议使用
System.Data.Sqlite
包装,其中包括加密。它工作得很好,易于使用,是一个完整的ADO.Net实现。您可以从获取包装器,开发人员将在以下位置介绍如何在此论坛上使用加密:。提示-您只需设置密码属性。他还介绍了他如何使用论坛其他地方的Microsoft Crypto API进行加密。

我会试试,这是在MIT许可下用C#重写SQLite 3.6.16。我想这很容易调整

编辑:如下面的说明所述,它还支持sqlcipher加密

更新:自从谷歌代码变成只读后,该项目已经转移到了自己的网站上

看看:

它是开源的


您还可以检查wxsqlite3的代码。

>有像SQLite Encryption Extension和SQLite Crypt这样的工具,但它们都是非免费的,而我的项目是GPL。我们还没有尝试在.NET中使用它,但我是[SQLCipher][1]的开发团队成员,它基本上是一个免费、无障碍的SQLite版本,提供透明的数据库加密。我建议在需要嵌入式db的移动和/或独立应用程序设置中使用它。[1] :…和.NET版本的SQLCipher现在也是一种商业产品:(C#-SQLite包括对SQLCipher包的内置支持;您可以使用SQLite_HAS_CODEC编译它,并使用PRAGMA hexkey=“0x0102030405060708090A0C0D0E0F10”激活它;链接已断开。你能提供新的吗?2011年,软件控制权转移到phxsoftware后,Robert Simpson似乎放弃了phxsoftware网站。我认为旧论坛页面不会发布到其他任何地方。上述链接版本113的缓存版本确实放弃了对SetPassword的支持。这是一种新的方式,尽管我认为是这样成本为2000美元,需要手动编译。