【问题标题】:SQLite Viewers/Browsers prevention in c#c# 中的 SQLite 查看器/浏览器预防
【发布时间】:2019-12-04 03:31:58
【问题描述】:

我需要知道如何保护我的sqlite 数据库文件不被sqlite 查看器/浏览器编辑或添加记录,我使用的是 c#

【问题讨论】:

    标签: c# sqlite sqlite-net


    【解决方案1】:

    您可以使用SQLite Encryption Extension,然后如果没有密钥,数据库将无法作为 SQLite 数据库打开。

    另一种方法是模拟 SEE 的工作方式。也就是说,存储在磁盘上的数据始终通过您喜欢的加密方法完全加密,并且数据库被解密为临时文件,然后在访问数据库时打开(显然只有在提供正确的密钥时),然后将其加密写完就写好了。

    另一种选择是使用SQLCipher

    【讨论】:

    • 感谢您的贡献,但这些是付费图书馆,我需要一个免费的解决方案。
    【解决方案2】:

    我解决了这个问题并使用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 感谢您的回答,它确实指导了我并帮助我找到了这个解决方案。

    【讨论】:

      猜你喜欢
      • 2013-10-06
      • 2023-03-19
      • 2011-07-11
      • 2013-09-20
      • 2014-03-13
      • 2023-04-08
      • 1970-01-01
      • 2018-06-18
      • 2019-05-19
      相关资源
      最近更新 更多