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

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.dtcms.com/a/314429.html

相关文章:

  • yolo实现基于深度学习的龋齿检测系统pyqt
  • Java 发送 HTTP POST请求教程
  • 回归预测 | MATLAB实现BP神经网络多输入单输出回归预测+SHAP可解释分析
  • 基于Matlab的聚类彩色图像分割系统
  • 基于MATLAB实现的心电图自动诊断系统
  • 各种信号分解、模态分解方法合集【MATLAB实现】
  • 链表问题解决分析框架
  • python与C++
  • 【RH124知识点问答题】第7章 控制对文件的访问
  • 【秋招笔试】2025.08.03虾皮秋招笔试-第一题
  • 芯片行业中的EDA(电子设计自动化)是什么?
  • 房屋租赁小程序租房小程序房产信息发布系统房屋租赁微信小程序源码
  • 用户管理——配置文件和命令
  • 探索机器学习在医疗领域的应用与挑战
  • Visual Studio 2022安装与快捷键全攻略
  • AI产品经理面试宝典第61天:AI产品体验、数据安全与架构实战解析
  • Linux中netstat详细使用指南
  • 开源的现代数据探索和可视化平台:Apache Superset 架构组件和安装方式 Kubernetes Docker Compose PyPI
  • 服务器突然之间特别卡,什么原因?
  • 为什么要烧录固件?——从生产到运维的全流程解析
  • k8s学习
  • 佚名运维训练营-第1天
  • 2025-08-04-零成本搭建 AI 应用!Hugging Face 免费 CPU 资源实战指南
  • 飞算JavaAI编程插件:以AI之力赋能Java开发,让编码效率再升级
  • 37. line-height: 1.2 与 line-height: 120% 的区别
  • 总结成人本科毕业前有哪些任务?
  • C++面试题及详细答案100道( 01-10 )
  • Android 分析底电流高即功耗大的几个方面
  • React 19 + Next.js 15 中实现混合布局
  • React Hooks 原理深度解析与最佳实践