使用非官方加密方式加密sqlite后,打开连接很慢

白日|梦想家 2021-08-12 18:45:13

问题描述:

Sqlite官方从某个版本开始,加密功能需要收费了,所以在网上找了一种办法来使用Sqlite加密功能。参考网址:https://dotnet9.com/18592.html

需要安装以下Nuget包:

Microsoft.Data.Sqlite.Core

SQLitePCLRaw.bundle_e_sqlcipher

Dapper(只是用到其ORM功能,不是必须)

然后测试的时候发现,访问加密的数据库时,打开数据库连接很慢,基本都要1500ms以上。而访问未加密的数据库,打开数据库连接速度则正常,基本都是几毫秒到几十毫秒,差距十分明显。这样一来,以短连接形式访问数据库的就基本不可能了。

经过搜索,发现2018年就有前辈遇到相同的问题了,也在这里发帖了,不过没有讨论出结果,原贴参考:https://bbs.csdn.net/topics/392391946

不知道是否有大侠也遇到过同样的问题,并有解决方案呢?

测试代码:

static void Main(string[] args)
        {
            var connStr = @"Data Source=D:\Database\Test.db;Password = a123456;";//连接字符串
            var connection = new SqliteConnection(connStr);//创建SQLite连接
            if (connection.State == ConnectionState.Closed)
            {
                DateTime dt1 = DateTime.Now;
                connection.Open();
                DateTime dt2 = DateTime.Now;
                Console.WriteLine($"打开连接耗时:{(dt2 - dt1).TotalMilliseconds}ms");

                var createTableSqlStr = @"CREATE TABLE  if not exists ""User"" ( ""Id"" INTEGER NOT NULL, ""AlarmName"" TEXT, ""AlarmTypeId"" INTEGER, PRIMARY KEY ( ""Id"" ) );";
                var result = connection.Execute(createTableSqlStr);//使用Dapper执行sql语句创建表

                var strSql = "Select * from User";
                connection.Query(strSql);
            }

            Console.ReadKey();
        }

测试结果:打开连接耗时:1805.6424ms

...全文
648 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jwh2004 2021-08-15
  • 打赏
  • 举报
回复

我是用的SQlite Developer给数据库加的密码,个别时候访问数据库也慢

吉普赛的歌 2021-08-13
  • 打赏
  • 举报
回复

官方的加密很快吗?

xuzuning 2021-08-12
  • 打赏
  • 举报
回复
解密是需要时间的,这很正常
白日|梦想家 2021-08-12
  • 举报
回复 1
@xuzuning 那这样的加密不没有意义了,连接一次耗时1秒多,那有什么应用能够使用

111,111

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧