.NET+Sqlite如何支持加密
点击上方蓝字关注我们
.NET+Sqlite如何支持加密
Sqlite
SQLite
来源于公共领域 SQLite Is Public Domain
、
确保代码不会受到任何专有或许可内容的污染,没有任何来自互联网上的未知来源复制。即全是原创的。
虽然是免费的,无需许可证,可用于任何目的,但如果你的公司必须要一个许可证,你也能申请授权https://sqlite.org/purchase/license.
但不支持加密。如果想支持登录加密,需要另外的扩展SQLite 加密扩展(SQLite Encryption Extension,),具有读取/写入 AES 加密数据库的附加功能。具体授权可参考 https://www.sqlite.org/prosupport.html
Sqlite加密
一直以来,FreeSql
开发群中,总会有一些开发者来询问Sqlite
加密的问题,事实上,官方提供的Sqlite加密功能是收费的。当连接串上使用Password
时,会提示授权问题。
如果底层依赖于System.Data.SQLite.Core
,
Could not load file or assembly 'System.Data.SQLite.SEE.License,
Version=1.0.115.5, Culture=neutral, PublicKeyToken=433d9874d0bb98c5,
processorArchitecture=MSIL
如果底层依赖于Microsoft.Data.Sqlite
也会提示
You specified a password in the connection string, but the native SQLite
library 'e_sqlite3' doesn't support encryption.
System.Data.SQLite.Core
创建一个控制台项目,起名 OvOv.SqliteSystemCore
dotnet new console -n OvOv.SqliteSystemCore
cd OvOv.SqliteSystemCore
安装包
dotnet add package System.Data.SQLite.Core
使用SQLiteConnection
创建一个连接,使用Password指定密码
using System.Data.SQLite;static void Open()
{string baseConnectionString = "Data Source=local.db";var connectionString = new SQLiteConnectionStringBuilder(baseConnectionString){Password = "123qwe"}.ToString();using SQLiteConnection? connection = new SQLiteConnection(connectionString);connection.Open();
}
Open();
运行项目
dotnet run
就会出现如下错误。
System.IO.FileNotFoundException:“Could not load file or assembly
'System.Data.SQLite.SEE.License, Version=1.0.115.5, Culture=neutral, PublicKeyToken=433d9874d0bb98c5, processorArchitecture=MSIL'.
系统找不到指定的文件。”
Microsoft.Data.Sqlite
创建一个控制台项目,起名 OvOv.SqliteMicrosoft
dotnet new console -n OvOv.SqliteMicrosoft
cd OvOv.SqliteMicrosoft
安装包
dotnet add package Microsoft.Data.Sqlite
使用SqliteConnection
创建一个连接,使用Password指定密码
using Microsoft.Data.Sqlite;static void Open()
{string baseConnectionString = "Data Source=local.db";var connectionString = new SqliteConnectionStringBuilder(baseConnectionString){Mode = SqliteOpenMode.ReadWriteCreate,Password = "123qwe"}.ToString();using SqliteConnection? connection = new SqliteConnection(connectionString);connection.Open();
}Open();
运行项目
dotnet run
就会出现如下错误。
Unhandled exception. System.InvalidOperationException: You specified a password in the connection string,
but the native SQLite library
'e_sqlite3' doesn't support encryption. at Microsoft.Data.Sqlite.SqliteConnection.Open()
其实微软已经提供了加密的方案。
https://docs.microsoft.com/zh-cn/dotnet/standard/data/sqlite/encryption?tabs=netcore-cli
dotnet remove package Microsoft.Data.Sqlite
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.bundle_e_sqlcipher
重新运行项目 ,就会发现,他正常执行。没有任何报错。
有关使用不同的本机库进行加密的详细信息,请参阅自定义 SQLite 版本。
我们从 自定义 SQLite 版本上可以看到。
默认情况下,主 Microsoft.Data.Sqlite
包引入 SQLitePCLRaw.bundle_e_sqlite3
。若要使用不同的捆绑,请改为安装 Microsoft.Data.Sqlite.Core
包以及要使用的捆绑包。
SQLitePCLRaw.bundle_e_sqlcipher
提供 SQLCipher 的非官方开放源代码内部版本。此版本支持加密。
完整代码
https://github.com/luoyunchong/dotnetcore-examples/blob/master/Database-Drivers/OvOv.SqliteMicrosoftCore/Program.cs
可点击原文查看
Nacos配置中心+ASP.NET Core
除了Swagger UI,你还能选择 IGeekFan.AspNetCore.RapiDoc
github访问慢,npm 等 半天,dev-sidecar这个工具帮你轻松搞定一切。
点个在看你最好看
.NET+Sqlite如何支持加密相关推荐
- android sqlite解密,SQlite数据库的加密与解密
一 关于SQlite Android系统自带的SQlite是明文存储,不支持加密 二 SQlite加密方式 内容加密 主要写入读取数据时候做加密与解密的动作 缺点: 表结构暴露 无法直接搜索 数据库文 ...
- android sqlite数据库加密,(转)SQLite数据库的加密
1.创建空的SQLite数据库. //数据库名的后缀你可以直接指定,甚至没有后缀都可以 //方法一:创建一个空sqlite数据库,用IO的方式 FileStream fs = File.Create( ...
- 给JFinal添加 Sqlite 数据库支持
2019独角兽企业重金招聘Python工程师标准>>> Sqlite 的单文件便携性.高性能在开发中方便性无与伦比,即使部署在中小型应用中也胜任有余. 在JFinal中添加对 Sql ...
- 12306加密传输_三大运营商发5G消息白皮书:短消息服务升级,支持加密传输
4月8日,中国电信.中国移动.中国联通联合举行线上发布会,共同发布<5G消息白皮书>.<白皮书>阐述了5G消息的核心理念,明确了相关业务功能及技术需求,提出了对5G消息生态建设 ...
- 美国住宅保修公司新增支持加密货币支付,并决定将 BTC 列入资产负债表
美国住宅保修(American Residential Warranty,ARW)公司新增支持加密货币支付.ARW 首席执行官 Richard Kaufman 表示:"非常兴奋加入到数字风险 ...
- 12306加密传输_前沿一键发送“文图音视频” 支持加密传输、图形密码、保护用户隐私……5G消息要来了!...
点击上方"中国信息安全" 可订阅 从驿寄梅花.鱼传尺素,到网络聊天.视频通话,纵观人类发展史,通信始终不可或缺且不断变迁. 过年群发的祝福语.情侣之间的甜蜜互动.朋友互相分享的心灵 ...
- sqlite数据库的加密与解密
sqlite数据库的加密与解密 单词创建的数据库:WH_Lexicon.db 利用sqlcipher对数据库进行加密:sqlcipher工具地址 下载之后,编译 $ ./configure --ena ...
- Hyper-V支持加密狗的方法
熟悉hyper-V的IT人员都知道,Hyper-V Server无法支持加密狗及USB外设,虽然重定向可以解决一部分问题,但对于有些环境下重定向并不适合.例如,某公司安装了某种服务器软件,该软件使用U ...
- 日本电商巨头乐天将更新其支付应用程序以支持加密货币
点击上方 "蓝色字" 可关注我们! 暴走时评: 根据日本电商业巨头乐天最近公布的2018年盈利报告,该公司将于3月18日发布其移动应用程序Rakuten Pay的重要更新.新版本将 ...
最新文章
- oracle12c不能进入到http://localhost:1158/em的解决办法
- request如何setParamter
- 我在外包公司做增删改查有前途么?
- LeetCode 1980. 找出不同的二进制字符串
- 如何在python中打开文件_Python文件处理:创建、打开、追加、读、写
- java算法的递归问题设计_java算法-递归算法思想
- 杭州电子科技大学计算机专硕表数二,杭州电子科技大学 计算机学院 2016级计算机技术(专硕)培养方案...
- 孪生网络图像相似度_孪生网络:使用双头神经网络进行元学习
- springboot2源码1-SpringApplication实例化
- 计算机组成原理试题以及答案
- ERROR: librtmp not found 解决方案
- 一文了解机器人伺服系统
- mac关闭虚拟内存_为什么不应该关闭Mac上的虚拟内存
- 导出计算机应用的组策略,组策略应用
- 对话《JavaScript高级程序设计》作者 Nicholas C. Zakas
- 七夕表白攻略:程序员的代码情书
- 20世纪中文电影一百强
- 东华OJ基础85——手机短号
- java 拨打电话_快速拨打电话号码
- oracle数据库频繁被锁,Oracle数据库账号频繁被锁定的原因排查
热门文章
- hdu4750Count The Pairs(最小生成树找瓶颈边)
- 轻松学PHP编程 源代码
- backgroundworder 简单使用
- mac下npm/node的安装和卸载、升级;node、npm升级后最后删掉node_modules重新安装
- 解决Ubuntu 16.04下提示boot分区空间不足的办法
- Java中如何利用gson解析数据
- unity的依赖注入
- Unity3D4.* NGUI制作动态字库
- 进程handle获取线程_获取进程中的线程列表
- pkpm板按弹性计算还是塑性_双向板按弹性方法还是按塑性方法计算