System.Data.SQLite使用什么类型/级别的密码加密

时间:2019-02-25 19:30:59

标签: encryption sqlite password-protection

使用库System.Data.SQLite来密码保护您的SQLite数据库时,使用哪种类型/级别的加密?

研究SQLite加密时,有很多选择,但是当使用上述库在.NET应用程序中创建SQLite数据库时,它使用哪种加密方法?

.NET代码中要加密SQLite数据库,只需在连接字符串中提供密码即可。

  

SQLite连接字符串

     

数据源= [DBFile.sqlite];版本= 3;密码= [密码]; datetimeformat = CurrentCulture;

如果实现了上述加密SQLite文件的路由,则应用了哪种类型的加密?我一直找不到任何说明此问题的文档。

  

加密选项:

     

我确实找到了以下链接,但是它没有告诉我我需要做什么   知道。除非我很稠密并且想念它。

     

https://www.bricelam.net/2016/06/13/sqlite-encryption.html

     

Stackoverflow帖子:

     

此SO Post此处已过时,因为它是SQLite 3之前的版本,但确实如此   关于加密可能性有一些不错的文档。这篇文章的答案之一   一个人说“ SQLite3 .Net   现在内置了对加密的支持,这在很大程度上使这种做法无效   答案”

     

上面提到的内置加密是什么?

     

SQLite with encryption/password protection

1 个答案:

答案 0 :(得分:1)

我浏览了the home page上的CHM文档。它几乎没有提到加密。我唯一能找到的信息是版本历史记录,内容如下:

  

1.0.24.3 Beta-2006年1月10日

     

...

     
      
  • 在寻呼机级别增加了对数据库加密的支持。使用 128位RC4流算法对数据库进行加密。要打开现有的加密数据库,您现在可以在ConnectionString中指定“ Password = {password}”文本,或者可以调用SQLiteConnection.SetPassword()函数来设置打开的连接上的密码。要加密现有的未加密数据库或更改加密数据库上的密码,必须使用SQLiteConnection.ChangePassword()函数。如果使用SetPassword()而不是在连接字符串中指定密码,或调用ChangePassword(),则可以使用二进制字节数组或文本字符串作为密码。
  •   
     

...

(重点是我的)

快速浏览RC4 Wikipedia Page会发现“在RC4中发现了多个漏洞,使其不安全。”我不相信。

同样值得注意的是:您正在谈论的加密模块不是SQLite的功能,而是System.Data.SQLite库提供的扩展。使用它会使您的数据库无法与其他SQLite读取器一起使用。