当前位置: 首页 > java >正文

Ubuntu 下编译 SQLCipher 4.8.0

Ubuntu 下编译 SQLCipher 4.8.0(支持 OpenSSL 3)全流程教程

本教程适用于 Ubuntu 20.04 / 22.04,讲解如何从源码编译 OpenSSL 3.0.13 和 SQLCipher 4.8.0,构建一个支持 AES 加密的 sqlite3 工具。


目录

  • 编译目标
  • 环境准备
  • 安装 OpenSSL 3.x
  • 编译 SQLCipher 4.8.0
  • 测试 SQLCipher 加密功能
  • 常见问题与说明

编译目标

  • 构建 SQLCipher 4.8.0
  • 启用 OpenSSL 3.x 提供的加密功能
  • 安装到 /opt/sqlcipher-4.8.0
  • 可执行工具支持 PRAGMA key='xxx' 加密/解密操作

环境准备

安装必要工具:

sudo apt update
sudo apt install -y build-essential wget tar tcl-dev

安装 OpenSSL 3.0.13

不要覆盖系统默认的 OpenSSL 1.1.x,建议安装到独立目录 /opt/openssl-3

cd ~/work_space/apps
wget https://www.openssl.org/source/openssl-3.0.13.tar.gz
tar xf openssl-3.0.13.tar.gz
cd openssl-3.0.13./config --prefix=/opt/openssl-3
make -j$(nproc)
sudo make install

安装完成后:

  • 头文件路径:/opt/openssl-3/include
  • 库文件路径:/opt/openssl-3/lib64

编译 SQLCipher 4.8.0

第一步:下载源码

cd ~/work_space/apps
git clone https://github.com/sqlcipher/sqlcipher.git -b v4.8.0
cd sqlcipher

第二步:配置编译参数

mkdir build
cd build../configure \--prefix=/opt/sqlcipher-4.8.0 \--with-tempstore=yes \CFLAGS="-DSQLITE_HAS_CODEC -DSQLITE_EXTRA_INIT=sqlcipher_extra_init -DSQLITE_EXTRA_SHUTDOWN=sqlcipher_extra_shutdown -I/opt/openssl-3/include" \LDFLAGS="/opt/openssl-3/lib64/libcrypto.so"

第三步:编译并安装

make -j$(nproc)
sudo make install

安装成功后可执行文件路径:

/opt/sqlcipher-4.8.0/bin/sqlite3

测试 SQLCipher 加密功能

编写测试脚本 test_sqlcipher.sh

#!/bin/bashSQLCIPHER_BIN="/opt/sqlcipher-4.8.0/bin/sqlite3"
DB_FILE="secret.db"
KEY="mykey"echo "==[1] 清理旧数据库=="
rm -f "$DB_FILE"echo "==[2] 创建加密数据库=="
$SQLCIPHER_BIN $DB_FILE "PRAGMA key='$KEY'; CREATE TABLE users(id INTEGER PRIMARY KEY, name TEXT);"echo "==[3] 插入数据=="
$SQLCIPHER_BIN $DB_FILE "PRAGMA key='$KEY'; INSERT INTO users(name) VALUES('Alice'), ('Bob');"echo "==[4] 查询数据=="
$SQLCIPHER_BIN $DB_FILE "PRAGMA key='$KEY'; SELECT * FROM users;"echo "==[5] 尝试用错误的 key 查询=="
$SQLCIPHER_BIN $DB_FILE "PRAGMA key='wrongkey'; SELECT * FROM users;"echo "== 测试完成 =="

执行测试脚本

chmod +x test_sqlcipher.sh
./test_sqlcipher.sh

预期输出示例:

==[1] 清理旧数据库==
==[2] 创建加密数据库==
==[3] 插入数据==
==[4] 查询数据==
1|Alice
2|Bob
==[5] 尝试用错误的 key 查询==
Error: file is not a database
== 测试完成 ==

常见说明

项目内容
OpenSSL必须为 3.x,推荐 3.0.13
SQLCipher4.8.0 版本,支持 PRAGMA key='xxx'
编译输出sqlite3,路径为 /opt/sqlcipher-4.8.0/bin/sqlite3
系统兼容性Ubuntu 20.04 / 22.04
注意事项不要覆盖 /usr/lib 中的系统 libcrypto
http://www.xdnf.cn/news/17083.html

相关文章:

  • CMake进阶: 使用FetchContent方法基于gTest的C++单元测试
  • sqli-labs靶场less29~less35
  • Ethereum:拥抱开源,OpenZeppelin 未来的两大基石 Relayers 与 Monitor
  • 互联网医院整体项目套表整理过程文档全流程分析
  • Linux 文件与目录属性管理总结
  • IPIDEA:全球领先的企业级代理 IP 服务商
  • Go语言 逃 逸 分 析
  • JVM(Java虚拟机)运行时数据区
  • 【测试】⾃动化测试概念篇
  • 服务器突然之间特别卡,什么原因?
  • 晨控CK-GW08S与汇川AC系列PLC配置Ethernet/IP通讯连接手册
  • 开疆智能ModbusTCP转Profient网关连接ER机器人配置案例
  • 第二十三天(APP应用产权渠道服务资产通讯抓包静态提取动态调试测试范围)
  • 红队信息收集工具oneforall子域名搜集爆破工具安装使用教程详细过程
  • Python-初学openCV——图像预处理(七)——模板匹配、霍夫变换
  • Nestjs框架: Node.js 多环境配置策略与 dotenv 与 config 库详解
  • Node.js高并发接口下的事件循环卡顿问题与异步解耦优化方案
  • open-webui pipelines报404, ‘Filter pipeline.exporter not found‘
  • MySQL 约束知识体系:八大约束类型详细讲解
  • stanford cs336 assignment1 Byte-Pair Encoding (BPE) Tokenizer
  • Onnx模型部署到Arm64进行推理
  • 分布式光伏气象站:为分散电站装上 “智慧之眼”
  • 从医学视角深度解析微软医学 Agent 服务 MAI-DxO
  • Cursor国产平替重磅开源!离线研发AI助手,拒绝云端受制于人
  • 房屋租赁小程序租房小程序房产信息发布系统房屋租赁微信小程序源码
  • 基于Java的AI/机器学习库(Smile、Weka、DeepLearning4J)的实用
  • 人类学家与建筑师:解析 UX 研究与项目管理的需求分析差异​
  • CPP初识
  • 腾讯混元重磅开源:四款小尺寸模型全面发布
  • 消息系统技术文档