使用SQLite数据库加密敏感信息并嵌入程序(2)

SQLite数据库在c#下的加密/解密 在最近的工作中,需要给本地SQLite数据库进行加密。于是产生了这篇文章。 阅读详情

一、上期摘要

 上一篇 文章,我们使用原生 SQLite 数据库引擎函数创建了一个演示数据库,我们的目标是将敏感信息保存到数据库并将之作为资源嵌入到程序中,以便在运行时实现某些诸如程序状态的收集、验证等操作。

通常情况下我们可以简单的将资源释放、保存到临时文件再加载获取数据以便完成相对隐蔽的操作。但既然是数据有敏感性,这种操作可能会造成了某些潜在的风险,我们的目标是资源数据不落地,所有操作都在内存中完成,完全避免上述可能的风险,接下来的文章就来完成这个目标。

二、资源编辑

上一篇文章我们使用 SQLiteDatabaseBrowserPortable 和原生 SQLite 函数分别生成了2个数据库文件,下面我们将这2个文件都作为资源嵌入到程序中,使用记事本新建一个 BNDemo.rc 的文件,保存在工程文件夹下,输入如图1所示的内容,描述资源名称、类型、文件路径即可。

图 1 BNDemo.rc 资源文件

 再新建一个批处理文件 BuildRes.bat,输入如图2所示,批处理中主要是调用brcc32.exe来编译资源文件,同样保存在工程文件夹下。

图 2  BuildRes.bat 批处理文件

 运行 BuildRes.bat 可以发现在当前工程文件夹下生成了一个 BNDemoDb.res 的文件,如图3所示,这个就是我们在程序中使用到的资源。

图 3  编译后程序中将使用的文件

接下来修改工程文件,加入嵌入资源语句,如下图4所示:

图 4  添加嵌入资源语句

 最后编译 Delphi 工程,然后使用 CFF Explorer 打开刚刚编译的工程文件查看其中的资源,图5显示了资源名称为“DB2”的二进制数据,可以清晰的辨识该资源数据就是由SQLiteDatabaseBrowserPortable 工具创建的未加密的数据库 demodb,作为对比再来看看资源“DB1”的二进制数据,如图6所示,可以看到由于该数据库已设置密码,无法直观的看到 SQLite 数据库文件头的标识 “SQLite format 3” 字样。

图 5  资源中的 demoDb 数据库二进制数据

图 6  资源中的 MyDemoDb.db 数据库二进制数据

三、结语

作为示例,本文所使用的资源经过编译后直接嵌入到程序本身,实际工程中往往单独编译成资源文件,与程序本身分离。

至此,我们已完成了准备工作,下一篇我们将着重代码的实现,目标是完成资源不落地的场景下解析获取所需数据。

SQLite数据库加密(Java语言、python语言) sqlite加密、python对sqlite加密、java对sqlite加密 阅读详情

相关推荐

【Android】数据安全(一) —— Sqlite加密

不考虑解密,假设一个表有10个字段,这时候需要插入一条数据,那么就有 9 ~ 10 个字段需要调用 MD5 加密算法加密一次,这才只是10个字段,如果一个表有几十个字段呢?数据库的的开源扩展,使用了 256 位 AES 加密,支持跨平台、零配置、数据100%加密、加密开销低至 5 -15%、占用空间小、性能出色等优点,因此非常适合保护嵌入式应用程序数据库,并且非常适合移动开发。我在写这篇博客之前,去了解了一些数据库加密的技术,有的博主提到一种方式:写入数据库前进行数据加密,取出来时解密。

宾有为的博客 2883

【转】Andorid-APP 安全测试

Android系统由于其开源的属性,市场上针对开源代码定制的ROM参差不齐,在系统层面的安全防范和易损性都不一样,Android应用市场对app的审核相对iOS来说也比较宽泛,为很多漏洞提供了可乘之机。市场上一些主流的app虽然多少都做了一些安全防范,但由于大部分app不涉及资金安全,所以对安全的重视程度不够;而且由于安全是门系统学科,大部分app层的开发人员缺乏安全技术的积累,措施相对有限。 ...

测试领域专家,多领域测试技术、管理、工具都略懂,略懂一二 1775

加密版 Sqlite3数据库安全增强指南

Sqlite3是一个轻量级、开源的数据库引擎,广泛用于嵌入式系统和移动应用中。它的最大特点是无需单独的数据库服务器进程,可直接嵌入应用程序中使用。由于其文件系统的特性,所有的数据库操作都被保存在一个单一的磁盘文件中,这大大简化了数据的持久化过程。AES,全称Advanced Encryption Standard,是一种对称密钥加密算法,意味着加密和解密使用同一个密钥。AES加密标准是由美国国家标准与技术研究院(NIST)在2001年发布,旨在替代旧有的DES(数据加密标准)。

weixin_42591908的博客 1303

移动安全(7) - 敏感信息安全 - SQLite

SQLite是一款轻量级的关系型数据库,运算速度快,占用资源少,特别适合在移动设备上使用,安卓内置了SQLite数据库 重新建一个工程,自己新建一个SQLite数据库,给新的数据库命名为BookStore.db 运行一下,点创建数据库按钮 查看/data/data/com.example.dbtest/databases文件夹,发现数据库文件已生成 进入adb shell查看刚才创建的数据库和表,依次执行以下命令: adb shell cd /data/data/com.exam.

菜鸟的测试世界 505

SqlCipher.exe Sqlite加密查看工具

SqlCipher.exe,Windows系统上的Sqlite加密查看工具,可以打开加密数据库后输入密码

加密sqlite 查看工具sqlcipher

SQLCipher is an Open Source SQLite extension that provides transparent 256-bit AES full database encryption 数据库查看工具 sqlcipher

android sqlite 数据库 加密分析

1.   SQLite 简介 SQLite是一款被设计用于嵌入式设备的轻型的数据库,是遵守ACID的关联式数据库管理系统,它具有存储效率高、查询快、运行时占用内存小、能被多进程同时访问以及单文件存储数据库内容等优点。SQLite中文官方网站上列举了SQLite的如下特点:     1. ACID事务   2. 零配置 – 无需安装和管理配置   3. 储存在单一磁盘文件中的一个完整的

大伟的专栏 1万+

SpyGlass Lint脚本实战:如何用TCL自动化RTL代码检查(附完整配置模板)

本文详细介绍了如何利用TCL脚本实现SpyGlass Lint工具的自动化RTL代码检查。通过构建模块化、工程化的脚本框架,文章提供了从环境搭建、核心配置、规则定制到豁免管理的完整实战指南,并附有可复用的配置模板,旨在帮助IC设计工程师构建高效、一致的代码质量检查流水线。

weixin_29204205的博客 134

移动安全-Android APP敏感信息测试

文章目录移动金融APP备案Android APP数据存储sdcard 文件SQLite数据库ContentProvidersharedPreferencesAPK客户端敏感信息测试Logcat 运行日志SQLite 数据库sharedPreferences其他本地文件的检查Genymotion模拟器补充 移动金融APP备案 最近在接触新的工作项目——移动金融APP备案,需要对金融 APP 客户端进行安全测试,在此总结记录下相关的部分测试内容和方法。 关于移动金融APP备案, Part1:首先看中国互联网金

道阻且长,行则将至 4235

有源滤波电路设计

目录一、低通滤波器1、同相输入低通滤波器(1)一阶低通滤波电路(2)二阶低通滤波电路(压控电压源;Sallen-Key)2、反相输入低通滤波器(1)一阶低通滤波电路(2)二阶低通滤波电路(无限增益多路反馈)二、高通滤波器1、同相输入高通滤波器(1)一阶高通滤波电路(2)二阶高通滤波电路(压控电压源;Sallen-Key)2、反相输入高通滤波电路(1)二阶高通滤波电路(无限增益多路反馈) 一、低通滤波器 1、同相输入低通滤波器 (1)一阶低通滤波电路 即在一阶无源低通滤波器的基础上,加了一个集成运放。 它的

qq_41873236的博客 3万+

新手避坑指南:用Silvaco Atlas搞定GaN HEMT电热仿真的完整流程(附代码解读)

本文详细介绍了使用Silvaco Atlas进行GaN HEMT电热特性仿真的完整流程,特别针对新手常见问题提供避坑指南。从软件环境配置、结构定义、网格划分到物理模型设置,逐步解析关键步骤,并附有代码解读和调试技巧,帮助读者快速掌握GaN器件仿真的核心技术。

weixin_29215815的博客 597

使用SQLite数据库加密敏感信息并嵌入程序(1)

一、前言 SQLite是目前运行最广泛的数据库引擎,没有之一。在实际开发中往往将数据经过多重进加密后保存到数据库,再将数据库作为资源嵌入到程序中,在运行时解密获取敏感信息,本文将实现相关实现演示。

WackMan的专栏 561

SquareLine Studio汉化版安装激活全攻略:LVGL嵌入式UI设计从入门到出代码

嵌入式GUI开发中,LVGL作为轻量级开源图形库,广泛应用于STM32、ESP32等MCU平台。可视化设计器通过拖拽生成LVGL代码,大幅提升UI开发效率。SquareLine Studio正是这类工具的代表,支持界面设计、事件绑定与代码导出。其安装、汉化与激活是初学者常见门槛,尤其涉及LVGL版本匹配、字体配置及FreeRTOS移植等关键环节。本文围绕汉化版安装、一个月免费激活码使用及最小可用流程展开,帮助开发者快速上手LVGL界面设计,规避常见环境与集成问题。

weixin_29189987的博客 414

Qt 使用Sqlite3数据库加密

最近在做一个嵌入式设备,因为设计密码问题,所以需要对sqlite数据库进行加密,但是找了好多例子都不能达到要求,好在最后终于找到一可用资源,本人亲测可用。源码:https://download.youkuaiyun.com/download/lsyrhz/10461435源码下下来包含了加密插件的源码还有一个测试的程序,首先需要编译sqlitecipher.pro项目了,编译debug和release后分别...

刘一儿(嵌入式) 1万+

spark 适配达梦数据库

spark 适配达梦数据库 版本 spark3.0.0 scala2.12.10 DM Database Server 64 V8 步骤一: 引驱动包: SBT方式: "com.dameng" % "Dm8JdbcDriver18" % "8.1.0.157", maven方式: <dependency> <groupId>com.dameng</groupId> <artifactId>Dm8JdbcDriver18</artifac

_@Eva@_的博客 2090

【系统架构设计师】预测试卷一:综合知识(75道选择题)

软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式,架构风格反映领域中众多系统所共有的结构和 (48),强调对架构(49)的重用。 (48) A. 语义特性 B. 功能需求 C. 质量属性 D. 业务规则 (49) A. 分析 B. 设计 C.实现

数据知道的博客 7766

使用SQLite数据库加密敏感信息嵌入程序(3)

SQLite 可移植到不同平台,在各操作系统上都能很好且高效一致的工作的主要原因是在底层与操作系统的交互上定义了一个虚拟文件系统,即 VFS(Virtual File System)。要实现一个标准的 VFS 可通过子类化三个对象来实现,三个对象分别是sqlite3_vfs(操作系统接口对象)、sqlite3_io_methods(操作系统接口文件虚拟方法对象)、sqlite3_file(操作系统文件对象)。

WackMan的专栏 546

OpenClaw 运行时错误文档:Embedded Run Agent End with Stream Error(嵌入式运行代理结束流式错误)

OpenClaw运行时错误文档:EmbeddedRunAgentEndwithStreamError(OC-ERR-009) 该错误表示LLM提供商在流式传输过程中发生服务器端异常(HTTP 500),属于可恢复的中等严重性错误。典型表现为日志中出现包含"stream_error"和500状态码的错误信息。系统会自动进行错误分类(50%为服务过载,25%网络问题等),并通过内置机制尝试解决:包括模型切换、API密钥轮换和自动重试策略。用户可采取重试请求、切换模型或简化请求内容等操作,管理

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 551

使用SQLCipher对SQLite数据库加密

详解Android数据存储之SQLCipher数据库加密 AndroidRoom数据库加密详解 SQLite是一个轻量级的、跨平台的、开源的嵌入式数据库引擎,也是一个关系型的的使用SQL语句的数据库引擎, 读写效率高、资源消耗总量少、延迟时间少,使其成为移动平台数据库的最佳解决方案(如Android、iOS) 但是Android上自带的SQLite数据库是没有实现加密的,我们可以通过Android Studio直接导出应用创建的数据库文件,然后通过如SQLite Expere Personal 这种可.

m0_62354563的博客 7893

C# WPF上位机开发(利用tcp/ip网络访问plc)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 c# wpf如果是用来开发非标上位机的,那么和plc的通信肯定是少不了的。而且,大部分plc都支持modbus协议,所以这个时候如果有一个库可以帮助我们和plc设备进行modbus通信,那就非常方便的。目前NuGet下关于modbus的函数库还是有一些的,比如EasyModbus。

嵌入式-老费,一个分享专业嵌入式知识的blog 2529

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Qt使用wxsqlite为sqlite加/解密并制作sqlite3shell工具

在嵌入式上使用QT开发用户界面时候,少不了使用数据库。但是Qt自带的sqlite3数据库是没有加密的,因此当保存一些敏感信息的时候很容易暴漏个人隐私。网上查了很多资料,此处做下总结方便大家学习。 1.加密方式分类 1.1)使用SQLCipher加密。 1.2)使用wxSqlite加密。 2.使用wxSqlite加密步骤 2.1)下载并解压文件 下载地址:Releases · utelle/wxsqlite3 · GitHub 此处我下载的是3-4.5.1,解压后如下: 由于文件众..

刘一儿(嵌入式) 2909

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Delphi使用wxsqlite加密Sqlite数据库

      提起桌面数据库,Sqlite谁都知道,但对于它的加密一直困扰着很多人,而delphi的加密使用范例更少。在网上混了两天,查找了一些Sqlite加密的相关资料,也知道了wxsqlite这个东西,它是一个sqlite3.dll的嵌入扩展,重要的是里面加入了对Sqlite的AES 128bit-256bit加密扩展,而且用的是Sqlite预留的函数接口,这意味着什么呢?UniDAC从3.5.14版本以后加入了对encrypted sqlite的支持,这功能支持 SEE/CEROD这样使用预留接口开发的

cyistudio的专栏 8061

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android SQLite数据库加密

一、前言 SQLite是一个轻量级的、跨平台的、开源的嵌入式数据库引擎,也是一个关系型的的使用SQL语句的数据库引擎, 读写效率高、资源消耗总量少、延迟时间少,使其成为移动平台数据库的最佳解决方案(如Android、iOS) 但是Android上自带的SQLite数据库是没有实现加密的,我们可以通过Android Studio直接导出应用创建的数据库文件,然后通过如SQLite Expere Personal 这种可视化工具打开数据库文件进行查看数据库的表结构,以及数据,这就导致存储在SQLite中的数据可

殇神马的博客 3511

Visual Studio 2010环境下Sqlite3加密版(由wxSqlite制作)使用方法

Sqlite3是著名的嵌入式数据库,应用之广就不多说了。本篇主要介绍如何使用加密功能。Sqlite3本身提供了加密的接口,但是加密功能并没有实现,用户要使用的话需要自己编写代码来实现加密功能。幸运的是,另一个开源工程wxSqlite(对Sqlite做的一个包装)实现了Sqlite3的加密模块,并且Sqlite3部分可以单独下载。下载地址:http://sourceforge.net/project

Felomeng的技术博客 1万+

​​H2 Database 与 SQLite 对比教程:从背景到未来优势​

​,由 Thomas Müller 开发,支持 ​。​,广泛用于移动端、桌面应用和 IoT 设备。SQLite 是一个​。

Rysxt_的博客 1013

使用sqlcipher打开加密的sqlite方法

Sqlcipher加密sqlite数据库之后,使用android版Sqlcipher访问数据库和原生的sqlite几乎一摸一样,只需要在打开数据库的时候设置密码,算法就可以打开

lgs7907 3804
上一篇: 使用国密函数读取金税盘信息-Delphi 版
下一篇: 使用SQLite数据库加密敏感信息嵌入程序(3)
吴说扒道
博客等级 码龄22年 9粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴说扒道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值