SQLite Viewers/Browsers 在 C# 中的预防
SQLite Viewers/Browsers prevention in c#
我需要知道如何保护我的 sqlite
数据库文件不被 sqlite
viewers/browsers 编辑或添加记录,我正在使用 c#
您可以使用 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 感谢您的回答,它确实指导了我并帮助我找到了这个解决方案。
我需要知道如何保护我的 sqlite
数据库文件不被 sqlite
viewers/browsers 编辑或添加记录,我正在使用 c#
您可以使用 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 感谢您的回答,它确实指导了我并帮助我找到了这个解决方案。