【发布时间】:2019-12-04 03:31:58
【问题描述】:
我需要知道如何保护我的sqlite 数据库文件不被sqlite 查看器/浏览器编辑或添加记录,我使用的是 c#
【问题讨论】:
标签: c# sqlite sqlite-net
我需要知道如何保护我的sqlite 数据库文件不被sqlite 查看器/浏览器编辑或添加记录,我使用的是 c#
【问题讨论】:
标签: c# sqlite sqlite-net
您可以使用SQLite Encryption Extension,然后如果没有密钥,数据库将无法作为 SQLite 数据库打开。
另一种方法是模拟 SEE 的工作方式。也就是说,存储在磁盘上的数据始终通过您喜欢的加密方法完全加密,并且数据库被解密为临时文件,然后在访问数据库时打开(显然只有在提供正确的密钥时),然后将其加密写完就写好了。
另一种选择是使用SQLCipher
【讨论】:
我解决了这个问题并使用System.Data.Sqlite 使用这些方法加密数据库
void EncryptDB()
{
using (System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection("Data Source=Test.db;Password="))
{
conn.Open();
conn.ChangePassword("password");
conn.Close();
}
}
void DecryptDB()
{
using (System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection("Data Source=Test.db;Password=password"))
{
conn.Open();
conn.ChangePassword("");
conn.Close();
}
}
我在使用sqlite-net-pcl 连接到数据库之前调用DecryptDB() 方法,并在连接关闭后调用EncryptDB()。
如果你问我为什么不使用System.Data.Sqlite 而不是sqlite-net-pcl,那是因为我发现sqlite-net-pcl 很简洁,执行任务所需的代码更少,更易于阅读和记录.
@MikeT 感谢您的回答,它确实指导了我并帮助我找到了这个解决方案。
【讨论】: