【Go】用 DBeaver、db browser 和 SqlCipher 读取 SqlCipher 数据库 ...

打印 上一主题 下一主题

主题 937|帖子 937|积分 2821

本文档主要描述如何用 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 数据库,因为可以用这个工具天生一个加密的数据库,之后你就可以用来测试。
安装

  1. apt-get install sqlcipher
复制代码
创建 SqlCipher 数据库

  1. sqlcipher encrypt-data.db
  2. sqlite> PRAGMA key = passphrase;
  3. sqlite> CREATE TABLE test (id INTEGER PRIMARY KEY, data TEXT);
  4. sqlite> INSERT INTO test (data) VALUES ('Hello, World!');
  5. sqlite> SELECT * FROM test;
  6. 1|Hello, World! #这行是输出
  7. sqlite> .exit
复制代码
读取 SqlCipher 数据库

  1. sqlcipher encrypt-data.db
  2. sqlite> SELECT * FROM test;
  3. Error: file is encrypted or is not a database #无法读取刚才加密的 db,需要先输入 key
  4. sqlite> PRAGMA key = passphrase;
  5. sqlite> SELECT * FROM test;
  6. 1|Hello, World! #这行是输出
  7. 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。
                 留意:假如点击后,下拉框没有可选项的,可以先点击确定,然后再点击编辑进来,再次点击一下找到类,就可以选择了。



  • 在毗连属性页签添加毗连属性
    在名称那一列右键,可以添加新属性,添加如部属性
       KeyValueciphersqlcipherfast_kdf_iter2hmac_algorithm0hmac_pgno1hmac_salt_mask0x3ahmac_user1kdf_iter64000legacy3legacy_page_size1024key用来加密数据库的密钥       留意,假如 legacy_page_size 要跟创建数据库时候的一致,这个问题详细见另一篇解说 用 Go 原生以及 Gorm 读取 SQLCipher 加密数据库
        主要是 key 和 legacy_page_size 这两个比较重要
    假如你是不同版本的 SqlCipher 大概有些参数会不同
       Parameterv4v3v2v1kdf_iter2560006400040004000fast_kdf_iter2222hmac_use1110hmac_pgno111/hmac_salt_mask0x3a0x3a0x3a/legacy4321legacy_page_size4096102410241024kdf_algorithm2000hmac_algorithm2000plaintext_header_size0///
毗连数据库

创建好 driver 后,就可以去毗连你的 SqlCipher 加密数据库。点击新建数据库毗连,选择刚才创建的 SqlCipherV3 驱动。路径,就是选择你本地大概通过 url 可以获取到的 sqlite3 加密的数据库。假如属性配置错误,会报 [SQLITE_NOTADB] File opened that is not a database file (file is not a database) 的错误。这个时候就要去查抄 key 和 legacy_page_size 有没有配对。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

来自云龙湖轮廓分明的月亮

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表