【Go】用 DBeaver、db browser 和 SqlCipher 读取 SqlCipher 数据库
本文档主要描述如何用 DBeaver、db browser 和 SqlCipher 上打开加密的 SQLite3 数据库(用 SqlCipher v3 加密)
软件版本
DBeaver:v24.1.0
SQLite-driver: sqlite-jdbc-3.46.0.0.jar
dbbrowser-for-sqlite-cipher:3.12.2
SqlCipher cli(ubuntun):3.15.2
SqlCipher(used for encrypt):v3
SqlCipher
先将如何用 SqlCipher 读取加密的 SQLite3 数据库,因为可以用这个工具生成一个加密的数据库,之后你就可以用来测试。
安装
apt-get install sqlcipher
创建 SqlCipher 数据库
sqlcipher encrypt-data.db
sqlite> PRAGMA key = passphrase;
sqlite> CREATE TABLE test (id INTEGER PRIMARY KEY, data TEXT);
sqlite> INSERT INTO test (data) VALUES ('Hello, World!');
sqlite> SELECT * FROM test;
1|Hello, World! #这行是输出
sqlite> .exit
读取 SqlCipher 数据库
sqlcipher encrypt-data.db
sqlite> SELECT * FROM test;
Error: file is encrypted or is not a database #无法读取刚才加密的 db,需要先输入 key
sqlite> PRAGMA key = passphrase;
sqlite> SELECT * FROM test;
1|Hello, World! #这行是输出
sqlite> .exit
注意,在输入 key 之后可能还需要配置,cipher_page_size
。在创建加密数据库的时候,可能会配置特别的 cipher_page_size
,没有就是默认,像上面不需要配置就能读取。需要的话,就是 PRAGMA cipher_page_size = 4096
。
db browser
下载路径: https://sqlitebrowser.org/dl/
安装
安装包会安装 DB Browser for SQLite
和 DB Browser for SQLCipher
,可以在安装过程中勾选 DB Browser for SQLCipher
到桌面。或者安装完后,到安装目录,把 DB Browser for SQLCipher
加到桌面。
连接数据库
打开软件就很直接,点击 Open Database
,选择完 db 就会跳出下面页面。有分 3 还是 4,如果是自定义的可以去 Custom 设置。这里面有一个自己踩的坑,可以去另一篇文章看下 用 Go 原生以及 Gorm 读取 SQLCipher 加密数据库。
如果密码输入错误,或者配置错误,会一直弹这个页面。
DBeaver
因为团队用的是 DBeaver 所以后面也去找了下 DBeaver 打开 SqlCipher 加密数据库的方法,
安装
软件下载地址https://dbeaver.io/
下载 jdbc-crypt 的 jar 包
https://github.com/Willena/sqlite-jdbc-crypt/releases ,里面下载的包,遵循 sqlite-jdbc-<version>.jar
的格式。我用的版本是 3.46.0.0,不过之前试的 3.41.2.0 也是没问题的。
创建 driver
DBeaver 没有 SqlCipher 的驱动,也就是你从菜单点击新建数据库连接,出来的可选数据库不支持 SqlCipher。
-
进入驱动管理器,顶部菜单栏数据库 -> 驱动管理器
-
点击新建,会看到如下页面,创建新驱动
-
在
设置
页签按照如下信息填写:-
驱动名称:SqlCipherV3
-
驱动类型:Generic
-
类名:org.sqlite.JDBC
-
URL 模板:jdbc:sqlite:{file}
-
其他的如果你有特殊的可以填写,上面 4 个填了就可以了
-
-
在
库
页面:-
点击
添加文件
,选择你刚才下载的 jar 包 -
点击
找到类
,选择org.sqlite.JDBC
。注意:如果点击后,下拉框没有可选项的,可以先点击确定,然后再点击编辑进来,再次点击一下
找到类
,就可以选择了。
-
-
在
连接属性
页签添加连接属性在名称那一列右键,可以
添加新属性
,添加如下属性Key Value cipher sqlcipher fast_kdf_iter 2 hmac_algorithm 0 hmac_pgno 1 hmac_salt_mask 0x3a hmac_user 1 kdf_iter 64000 legacy 3 legacy_page_size 1024 key 用来加密数据库的密钥 注意,如果 legacy_page_size 要跟创建数据库时候的一致,这个问题具体见另一篇讲解 用 Go 原生以及 Gorm 读取 SQLCipher 加密数据库
主要是
key
和legacy_page_size
这两个比较重要如果你是不同版本的 SqlCipher 可能有些参数会不同
Parameter v4 v3 v2 v1 kdf_iter 256000 64000 4000 4000 fast_kdf_iter 2 2 2 2 hmac_use 1 1 1 0 hmac_pgno 1 1 1 / hmac_salt_mask 0x3a 0x3a 0x3a / legacy 4 3 2 1 legacy_page_size 4096 1024 1024 1024 kdf_algorithm 2 0 0 0 hmac_algorithm 2 0 0 0 plaintext_header_size 0 / / /
连接数据库
创建好 driver 后,就可以去连接你的 SqlCipher 加密数据库。点击新建数据库连接,选择刚才创建的 SqlCipherV3 驱动。路径,就是选择你本地或者通过 url 可以获取到的 sqlite3 加密的数据库。如果属性配置错误,会报 [SQLITE_NOTADB] File opened that is not a database file (file is not a database)
的错误。这个时候就要去检查 key
和 legacy_page_size
有没有配对。
相关文章:
![](https://img-blog.csdnimg.cn/direct/6438ead08d4944afb2df86a1df27ed21.png#pic_center)
【Go】用 DBeaver、db browser 和 SqlCipher 读取 SqlCipher 数据库
本文档主要描述如何用 DBeaver、db browser 和 SqlCipher 上打开加密的 SQLite3 数据库(用 SqlCipher v3 加密) 软件版本 DBeaver:v24.1.0 SQLite-driver: sqlite-jdbc-3.46.0.0.jar dbbrowser-for-sqlite-cipher:3.12.2 SqlCipher cli(ubuntun)&am…...
![](https://img-blog.csdnimg.cn/direct/afafd843cef34b9aae61a705a448f316.png)
ROS操作过程中的报错
文章目录 错误:E: Unable to locate package ros-noetic-desktop-full报错问题报错原因解决方法 错误2:ERROR: cannot download default source list from:报错问题错误原因解决办法 错误:E: Unable to locate package ros-noetic-desktop-fu…...
![](https://img-blog.csdnimg.cn/img_convert/1cc24112c248d52b41b7ffbb95b2128e.png)
Qt项目学习-20240617
Qt项目学习 1.0 文件构建 1.1 预处理命令 C预处理命令是编译过程中的第一步,发生在编译器进行实际编译之前。预处理器(preprocessor)执行这些命令,它们不是C语言的一部分,但对源代码的编译过程至关重要。以下是一些常…...
![](https://img-blog.csdnimg.cn/img_convert/63a72911690e6e8ffa399261be8b0900.png)
加密好的WPSword文档,忘记密码怎么办?
在日常办公和学习中,我们经常使用WPS Word等文档处理软件来创建和编辑重要文件。为了保护这些文件不被未经授权的人访问,我们通常会选择给文档设置密码。然而,有时我们可能会因为时间久远或其他原因而忘记自己设置的密码,这时该如…...
![](https://img-blog.csdnimg.cn/direct/279df93bd61644348fad28bb80e44407.png#pic_center)
C# WPF 读写CAN数据
C# WPF 读写CAN数据 CAN 分析仪 分析仪资料下载 官方地址:https://www.zhcxgd.com/1.html CSDN: 项目配置 复制Dll库文件 文件在上面的资料里面 设置不安全代码 CAN C#工具类 CAN_Tool.cs using Microsoft.VisualBasic; using System; using Sys…...
![](https://www.ngui.cc/images/no-images.jpg)
力扣2517.礼盒的最大甜蜜度
力扣2517.礼盒的最大甜蜜度 二分答案求最小值 排完序判断是否有k个差距至少为mid的元素别用i遍历 可能会越界 用 : 有多少取多少 class Solution {public:int maximumTastiness(vector<int>& price, int k) {ranges::sort(price);auto check [&](int mid) -&…...
![](https://img-blog.csdnimg.cn/direct/7d700e0542394a53b84a2a33935cf9de.png)
多模块存储器
随着计算机技术的发展,处理的信息量越来越多,对存储器的速度和容量要求也越来越高;而且随着CPU性能的不断提高、IO设备数量不断增加,导致主存的存取速度已经称为了整个计算机系统的性能瓶颈。这就要求我们必须提高主存的访问速度。…...
![](https://img-blog.csdnimg.cn/direct/fa241d769aba49bfb2dd522ab638836f.png)
Windows反截屏开发实现
文章目录 Windows反截屏开发实现1. SetWindowDisplayAffinity2. 反截屏系统3. 总结 Windows反截屏开发实现 最近在我们云桌面中需要做到反截屏能力,所谓反截屏就是我们无法通过截图软件(微信,QQ,截图等程序)截取桌面的…...
![](https://www.ngui.cc/images/no-images.jpg)
Android.mk的用法
前言 Android.mk 文件是 Android 编译系统中用于描述项目源文件、库和模块的 Makefile。它采用 GNU Make 的语法,但也包含了一些特定于 Android 编译系统的规则和变量。以下是对其语法和使用方法的详细解释及示例。 一:模块种类 一个Android.mk file用来向编译系统描述你的源…...
![](https://img-blog.csdnimg.cn/direct/29c4f0f2177f4929adcb33eadae1adb9.png)
android studio CreateProcess error=2, 系统找不到指定的文件
【问题记录篇】 在AndroidStudio编译开发jni相关工程代码的时候,编译遇到的这个报错: CreateProcess error2, 系统找不到指定的文件。排查处理步骤: 先查看Build Output的具体日志输出 2.了解到问题出在了NDK配置上,此时需要根据自己的gra…...
![](https://www.ngui.cc/images/no-images.jpg)
jQuery如何把单选框设置为选中状态
在网页开发中,我们经常需要使用表单元素来收集用户数据。其中,单选框(radio button)是一种常见的表单元素,用于从一组选项中选择一个。使用jQuery,我们可以轻松地控制这些单选框的状态,包括将它…...
![](https://img-blog.csdnimg.cn/direct/018c742634cd49a0ae489b480727bc71.png)
Mware Fusion Pro 13 mac版:一键掌控虚拟世界
VMware Fusion Pro 13是一款功能卓越的虚拟化软件,专为Mac操作系统量身打造。这款软件为用户提供了一个一站式的虚拟化解决方案,能够满足各种多样化的需求。 VMware Fusion Pro 13 Mac获取 VMware Fusion Pro 13的强大之处在于其采用了最 先进的虚拟化…...
![](https://img-blog.csdnimg.cn/direct/63f14f48b17b43aa917b24eb5a0e458a.png)
PTA - 函数的定义与调用
编写一个名为collatz()的函数,它有一个名为number的参数: 如果number是偶数,那么collatz()就打印number加上2如果number是奇数,那么collatz()就打印number乘以2 函数接口定义: def collatz(number)裁判测试程序样例: /* 请在这里填写答案…...
![](https://img-blog.csdnimg.cn/direct/6bb0624edf264a5aa15288a74765bf04.png)
Solr7.4.0报错org.apache.solr.common.SolrException
文章目录 org.apache.solr.common.SolrException: Exception writing document id MATERIAL-99598435990497269125316 to the index; possible analysis error: cannot change DocValues type from NUMERIC to SORTED_NUMERIC for field "opt_time"Exception writing…...
![](https://img-blog.csdnimg.cn/img_convert/139f13bd6b336e199cdfd281a54f5c1b.png)
从2-3-4树开始理解红黑二叉树(JAVA代码手撸版)
经典的红黑二叉树在新增/删除数据时维持自平衡始终对应着一个2-3-4 树。本文只关注2-3-4 对应的经典红黑二叉树。 暂时不考虑 2-3 树对应的左倾红黑二叉树。 背景知识 2-3-4 树简介 一棵 2-3-4 树的结点分为 内部结点 (internal nodes) 和 叶子结点 (leaf nodes) ,…...
![](https://www.ngui.cc/images/no-images.jpg)
模板类与继承
1模板类继承普通类(常见) #include<iostream> using namespace std; class AA { public:int m_a;AA(int a) :m_a(a) { cout << "调用了AA的构造函数\n"; }void func1() { cout << "调用func1()…...
![](https://img-blog.csdnimg.cn/direct/ba4ee7e6fb174dfb81fbadfb0b20e196.png)
随手记:uniapp图片展示,剩余的堆叠
UI效果图: 实现思路: 循环图片数组,只展示几张宽度就为几张图片边距的宽度,剩下的图片直接堆叠展示 点击预览的时候传入当前的下标,如果是点击堆叠的话,下标从堆叠数量开始计算 <template><…...
![](https://www.ngui.cc/images/no-images.jpg)
微服务迁移、重构最佳经验
1. 了解现有的单体应用: - 应用架构和技术栈 要了解现有的应用架构和技术栈,可以采取以下几个步骤: 1. 了解应用的背景和目标:首先要了解应用的背景和目标,包括应用所属的行业、应用的类型(例如Web应用、移动应用等…...
![](https://img-blog.csdnimg.cn/direct/9fe47c9daaad48d690bc09bfd63a0fe6.png#pic_center)
【Python】从0开始的Django基础
Django框架基础 unit01一、Django基础1.1 什么是Django?1.2 安装与卸载1.2.1 Python与Django的版本1.2.2 安装1.2.3 查看Django版本1.2.4 卸载 二、Django项目2.1 概述2.2 创建项目2.3 启动项目2.4 项目的目录结构2.5 配置 三、URL 调度器3.2 定义URL路由3.2 定义首页的路由3.…...
![](https://img-blog.csdnimg.cn/img_convert/a5ceb2c33b4f6acd44c49103a11c3b73.png)
红黑树(数据结构篇)
数据结构之红黑树 红黑树(RB-tree) 概念: 红黑树是AVL树的变种,它是每一个节点或者着成红色,或者着成黑色的一棵二叉查找树。对红黑树的操作在最坏情形下花费O(logN)时间,它的插入操作使用的是非递归形式实现红黑树的高度最多是…...
![](https://www.ngui.cc/images/no-images.jpg)
高级视频编码器性能对比(H265、VP9、AV1)
1、背景介绍 目前在视频编解码器中,H264已经成为绝对的主流,被大部分设备、浏览器所支持。虽然有更先进的编码器推出,但是受限于推广速度和设备支持成本,一直未能成为主流。 今年公司目标是持续降本增效,现在将”屠刀…...
![](https://img-blog.csdnimg.cn/direct/089981a609244fc68852069c2eee088c.png)
示例:WPF中DataGrid简单设置合并列头
一、目的:应用DataGridTemplateColumn列模板,去拆分列头和单元格布局的方式设置列头合并样式 二、实现 效果如下 三、环境 VS2022 四、示例 应用DataGridTemplateColumn自定义列头信息和单元格信息 <DataGrid AutoGenerateColumns"False"…...
![](https://img-blog.csdnimg.cn/9c59faf2ddf64b97b87cb6e4d2674313.png)
Matlab图像处理——细胞图像的分割和计数显示
一. 项目介绍 使用MATLAB编写的细胞图像分割及计数系统,实现了对图像内细胞的计数,以及对每个细胞周长和面积的测量,并分别展示了分割后的每个细胞的图像。实验步骤共分为图像预处理、图像预分割、空洞填充、黏连细胞分割、细胞个数统计、细胞…...
![](https://www.ngui.cc/images/no-images.jpg)
六爻排盘神机
选修课留了3000字的论文......确实,削微有那么一点小困难…… 但是,倘若我拿出已经占了6419个字符的 “六爻排盘神机” ,阁下…应该…不会…骂我吧 且看,六爻排盘神机! import random import datetime from lunarcale…...
![](https://img-blog.csdnimg.cn/direct/73f12c7d64f340999735eed2aba47714.png#pic_center)
【ARMv8/v9 GIC 系列 2.1 -- GIC SPI 中断的 pending 和 clear pending 配置】
文章目录 GIC Pending 和 Clear PendingGICD_ISPENDR<n>GICD_ICPENDR<n>参数<n>编号解释使用举例设置中断ID 100为挂起状态清除中断ID 100的挂起状态 代码实现小结 GIC Pending 和 Clear Pending 在ARMv8体系结构中,GICD_ISPENDR<n> 和 GI…...
![](https://img-blog.csdnimg.cn/direct/2e831004d33a49aeb52e0cbfa2020e65.png)
SpringBoot集成logback初始化源码解析(部分)
一.SpringBoot配置扩展点 SpringBoot日志模块使用监听的方式进行初始化,在SpringBoot项目启动后,会通知日志监听器 在日志监听器中ApplicationStartingEvent事件用来确定到底使用哪个日志系统,logback log4j等 在日志监听器中ApplicationEn…...
![](https://img-blog.csdnimg.cn/direct/ae961e4561c442538013bc7effadf34a.png)
【Linux工具】yum软件包管理器与Vim编辑器的高效运用
目录 Linux 软件包管理器 YUM 什么是软件包 安装工具 rzsz 及注意事项 查看软件包 安装和卸载软件 安装软件 卸载软件 Linux 开发工具 编辑器 - Vim 使用 编辑 Vim 与 Vi 的区别 Vim 的基本概念 三种模式 Vim 的基本操作 操作尝试: Vim 命令集解释…...
![](https://img-blog.csdnimg.cn/direct/87298e08e5cc42c5b0d6892a1d4be369.png)
Matlab数学建模实战应用:案例4 - 图像处理
目录 前言 一、图像处理基础 二、Matlab图像处理工具箱 三、案例:图像锐化、去噪和分割 步骤 1:读取和显示图像 步骤 2:图像锐化 步骤 3:图像去噪 步骤 4:图像分割 完整代码示例 四、实际应用 实例总结 总…...
![](https://img-blog.csdnimg.cn/direct/6510cf6db11c48f2a87522952cbc0b99.png)
Studying-代码随想录训练营day15| 222.完全二叉树的节点个数、110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和
第十五天,二叉树part03💪,编程语言:C 目录 257.完全二叉树的节点个数 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和 总结 257.完全二叉树的节点个数 文档讲解:代码随想录完全二叉树的节点个数 视频讲解…...
![](https://img-blog.csdnimg.cn/direct/404afa0e0e0441b7a2baf6e437264aed.png#pic_center)
Python 基础:异常
目录 一、异常概念二、处理异常2.1 抛出异常2.2 使用 try-except 代码块2.3 使用 try-except-else 代码块2.4 静默失败 三、总结 遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步! 本文参考:《Python编程&a…...
![](https://img-blog.csdnimg.cn/20181129183246138.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p1bm1veGk=,size_16,color_FFFFFF,t_70)
怎么做子网站/优化公司哪家好
因为项目需要,我封装了三个不同的二维码构建,一个是制作普通的二维码,一个是带logo的,还有一个是带logo和文字的,不废话,直接上代码。 添加依赖 <dependency><groupId>com.google.zxing</…...
![](/images/no-images.jpg)
护肤品网站建设分析/石家庄全网seo
公司新来的同事说,他们是用javascript代码拼html代码的,如果要修改值,就是修改对象的属性。 交代下,我们现在都是用拼字符串的方式拼html代码的。他提到如果写在单独的javascript文件中,可以用工具对js文件进行加密。 …...
![](https://img-blog.csdnimg.cn/img_convert/6e24e0a756dd8f71ca60a958aecc5811.png)
app设计网站推荐/谷歌 chrome 浏览器
UDP(User Data Protocol,用户数据报协议)(1) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是…...
![](/images/no-images.jpg)
聊城集团网站建设价格/短视频营销策划方案
环境:AlwaysOn集群 操作系统:Windows Server 2008 R2 数据库: SQL Server 2014 错误提示:“该日志未截断,因为其开始处的记录是挂起的复制操作或变更数据捕获。请确保日志读取器代理或捕获作业正在运行,或使…...
![](https://img-blog.csdnimg.cn/20210427150608877.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MDgyOTY1Mw==,size_16,color_FFFFFF,t_70#pic_center)
深圳网站建设忧化/策划方案
这篇文章将教会大家如何利用 Postman,通过 Mock 的方式测试我们的 API。 什么是 Mock Mock 是一项特殊的测试技巧,可以在没有依赖项的情况下进行单元测试。通常情况下,Mock 与其他方法的主要区别就是,用于取代代码依赖项的模拟对…...
![](http://www.jiachengzy.com/uploads/images/740269.jpg)
做婚纱网站是怎么确认主题/百度首页网站推广多少钱一年
摘要:算机是夏河拉卜楞寺保存数量最多,最富特色的艺术品,起源于松赞干布时期。为便于利用资金时间价值的形式,算机不论现金流量具体内容所涉及的价值指标是时点指标还是时期指标,均作为时期指标来处理。不论是新建项目,门高还是更…...