SQLite database实现加密

注意:以下操作以VS2022为开发工具,以**C#**为开发语言。

数据加密原因

软件在使用的各个场景,很多都需要数据具有保密性,于是对于数据库就需要加密。特别是在某些特定领域或存储敏感数据尤其如此。

SQLite加密实现

SQLite加密有两种方式,其一是使用SQLite的收费版本,其可以实现加密;另一种就是使用免费的SQLitePCLRaw 来实现。收费版由于囊中羞涩,就不多说了,说说使用SQLitePCLRaw怎么实现加密。

加密实现步骤

首先在所需要的项目安装Nuget包SQLitePCLRaw.bundle_e_sqlcipher,当前最新版本为2.1.7。

然后只需要连接SQLite的字符串中添加 Password=YourPassword 即可,以下为使用EFCore时重写OnConfiguring实现加密的示例,其它方式可参考此示例进行相应操作:

cs 复制代码
        protected override void OnConfiguring(DbContextOptionsBuilder options)
            => options.UseSqlite($"Data Source={DbPath};Password={Consts.DbPwd}");

加密后数据如何查看?

通过上述操作加密后使用Sqlite查看工具就需要输入密码才可进行查看数据,以SQLiteStudio为例进行说明。

1.添加数据库时,Database type一定要选择SQLCipher,然后再选择你的Sqlite的db文件。

2.在下图中的Password中录入密码(Sqlite加密是没有用户名的),然后点击下图中左下角的Test connection进行测试,确认密码是否正确。

密码正确的话,点击上图中的OK,即可成功将数据库添加到SQLiteStudio中。后续的数据查看及相应操作与未加密的SQLite完全一致。

验证database是否加密?

至于验证是否加密,若安装了SQLiteStudio,并将db文件关连了SQLite Studio,那么双击 .db文件是不能直接打开的,双击时会出现报错:[17:45:06] Could not add database F:\backup\Source\win10-x64\DataBase\your.db: file is not a database; file is not a database; file is not a database.

相关推荐
万象.25 分钟前
redis数据结构set和zset的基本指令
数据结构·数据库·redis
全栈测试笔记7 小时前
异步函数与异步生成器
linux·服务器·前端·数据库·python
Lee_SmallNorth7 小时前
变态需求之【角色不同访问数据库的用户不同】
java·开发语言·数据库
李慕婉学姐7 小时前
Springboot连锁火锅管理及预测系统sh5s1gn1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
dishugj7 小时前
【oracle】19c集群巡检问题
数据库·oracle
知识分享小能手7 小时前
Oracle 19c入门学习教程,从入门到精通,Oracle 其他数据对象 —— 语法详解与综合实践(11)
数据库·学习·oracle
木风小助理7 小时前
JavaStreamAPI的性能审视,优雅语法背后的隐形成本与优化实践
java·前端·数据库
Knight_AL7 小时前
MySQL InnoDB 锁机制深度解析:行锁、表锁、间隙锁、临键锁(Next-Key Lock)
数据库·mysql
良策金宝AI8 小时前
工程设计企业AI试用落地路径:从效率验证到知识沉淀
数据库·人工智能·知识图谱·ai助手·工程设计
panzer_maus8 小时前
Redis的简单介绍(2)-处理过期Key的策略
数据库·redis·缓存