.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()
其实微软已经提供了加密的方案。
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 的非官方开放源代码内部版本。此版本支持加密。
完整代码
.NET+Sqlite如何支持加密的更多相关文章
- sqlite的源代码加密,以及其它一些文章
一. 给数据库加密 前面所说的内容网上已经有很多资料,虽然比较零散,但是花点时间也还是可以找到的.现在要说的这个——数据库加密,资料就很难找.也可能是我操作水平不够,找不到对应资料.但不管 ...
- QT实现支持加密的Sqlite数据库引擎
Sqlite数据库使用很广泛,我们经常会在发布一些小型软件的时候使用它,因为它不需要安装服务器.QT默认的数据库引擎是支持SQLITE数据库的,但并不支持对数据库加密,不加密的Sqlite数据库任何人 ...
- 基于正则的INI读写工具类,支持加密解密
看到这个标题,有人会问,现在都用xml做配置文件了,谁还用INI文件啊!下面来简单对比一下xml和ini: 1.XML功能强大表达能力强,同时扩展性好. 2.它的主要优势是异构平台的整合.通讯. 3. ...
- wzplayer V1.6正式版(无限制)不支持加密版本 2014-07-08
2014-07-08 修复部分视频倾斜问题,同时给受影响的客户给予更新. wzplayer V1.6正式版(无限制)不支持加密版本 发布于官方,下载地址wzplayer V1.6正式版(无限制)不支持 ...
- 给JFinal添加 Sqlite 数据库支持
[转自] http://my.oschina.net/u/237078/blog/69934 Sqlite 的单文件便携性.高性能在开发中方便性无与伦比,即使部署在中小型应用中也胜任有余. 在JFin ...
- SQLite不支持的SQL语法总结
1 TOP 这是一个大家经常问到的问题,例如在SQLSERVER中可以使用如下语句来取得记录集中的前十条记录: SELECT TOP 10 * FROM [index] ORDER BY indexi ...
- SQLite数据库的加密【转】
1.创建空的SQLite数据库. //数据库名的后缀你可以直接指定,甚至没有后缀都可以 //方法一:创建一个空sqlite数据库,用IO的方式 FileStream fs = File.Create( ...
- Sqlite数据库的加密
最近在做一个winform的程序,考虑用Sqlite的数据库,小巧而实用,比Access强多了,不过需要加密,不过free版本没有实现加密,有一些c++的实现:比如:http://www.sqlite ...
- (转)SQLite数据库的加密
1.创建空的SQLite数据库. //数据库名的后缀你可以直接指定,甚至没有后缀都可以 //方法一:创建一个空sqlite数据库,用IO的方式 FileStream fs = File.Create( ...
随机推荐
- C++中Try Catch中的继承
1.C++中Try Catch简介:我们编译运行程序出错的时候,编译器就会抛出异常.抛出异常要比终止程序灵活许多. 而C++异常是指在程序运行时发生的反常行为,这些行为超出了函数正常功能的范围.当程序 ...
- HashMap有几种遍历方法?推荐使用哪种?
本文已收录<面试精选>系列,Gitee 开源地址:https://gitee.com/mydb/interview HashMap 的遍历方法有很多种,不同的 JDK 版本有不同的写法,其 ...
- python写的多项式符号乘法
D:\>poly.py(x - 1) * (x^2 + x + 1) = x^3 - 1 1 import ply.lex as lex # pip install ply 2 import p ...
- Git(一)【基本使用,集成IDEA,GitHub】
目录 一.本地库操作 ①基本操作 1.初始化本地库 2.设置用户签名|用户名|邮箱 3.查看本地库状态 4.添加暂存区 5.提交到本地库 6.查看文件modify详情 ②历史版本以及回退 1.查看历史 ...
- Linux基础命令---lynx浏览器
lynx lynx是一个字符界面的全功能www浏览器,它没有图形界面,因此占用的资源较少. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora. 1.语法 ...
- liunx 安装ActiveMQ 及 spring boot 初步整合 activemq
源码地址: https://gitee.com/kevin9401/microservice.git 一.安装 ActiveMQ: 1. 下载 ActiveMQ wget https://arch ...
- 【Python】【Module】hashlib
用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 import hashlib # ######## ...
- PDF.js Electron Viewer
PDF.js 是基于 HTML5 解析与渲染 PDF 的 JavaScript 库,由 Mozilla 主导开源. 本文旨在介绍 PDF.js 于 Electron 里如何开始使用,实际尝试了用其 A ...
- 如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目
目录 前言 项目目录 搭建项目 1. docker安装启动mysql以及redis 1.1 安装mysql 1.2 安装redis 2. 初始化数据库 3.创建项目 4.初始化代码 4.1 全局配置文 ...
- [BUUCTF]REVERSE——[WUSTCTF2020]level3
[WUSTCTF2020]level3 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,找到关键函数 看样子是个base64加密,但又感觉没那么简单,再翻翻左边的函数,找到了base64加 ...