sqlcipher 在Android NDK实现sqlcipher加密库 (史上最详细教程)

本文详细介绍了如何在Android NDK环境下编译sqlcipher加密库,通过将加密部分放入库文件中,提升数据库安全性。文章涵盖获取sqlcipher和openssl源码、设置交叉编译环境、编译源码、在Android NDK中编译及数据库加密的每个步骤,确保在真机上的可行性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

sqlite适合嵌入在android上。在java应用层上使用sqlcipher的密钥有被反汇编的风险,考虑将sqlcipher移植到ndk上,这样将把加密数据库部分放到库文件里面供java调用。加大数据库被破解的难度。本文介绍在Android studio NDK实现sqlcipher加密库的方法步骤。


提示:以下是本篇文章正文内容,下面案例可供参考

一、准备

将以下download,然后都放到虚拟机ubuntu 中

1 .获取sqlcipher源码版本4.4.2

https://github.com/sqlcipher/sqlcipher

2 .获取openssl源码版本1.1.1f

https://github.com/openssl/openssl/tree/OpenSSL_1_1_1f
也可以试试1.1.1别的版本,本人没试过,但不推荐1.0.2以下的版本

3 .虚拟机ubuntu 提供交叉编译环境

https://developer.android.google.cn/ndk/downloads/older_releases
推荐Android NDK 16b,因为AS后面的版本是用逐渐用clang编译,没有arm-xxxxxx-gcc了。因为要的就是这个版本里面的交叉工具链arm-xxxxxx-gcc,用来交叉编译上述2个源码。

二、配置步骤

1.搭建交叉编译环境

unzip android-ndk-r16b-linux-x86_64.zip
cd android-ndk-r16b

2.编译源码sqlcipher

	unzip sqlcipher-master.zip
	cd sqlcipher-master
 	mkdir bld                ;#  Build will occur in a sibling directory
    cd bld                   ;#  Change to the build directory
    ../configure   --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC"      ;#  Run the configure script
    make                     ;#  Run the makefile.
    make sqlite3.c           ;#  Build the "amalgamation" source file

这里的编译使用本地gcc编译(如果使用交叉编译,需要配置好编译环境(比较麻烦),因为我们的目的是获得整合版的sqlcipher的源码,所以建议不要交叉编译 ,到此sqlcipher源码生成完毕,复制bld目录下的 sqlite3.c和sqlite3.h到AS工程中去

#在ndk中cmake配置sqlcipher部分
cmake配置 (sqlcipher部分)
add_library(
      # 设置so文件名称.
       JNI
       # 设置这个so文件为共享.
       SHARED
       # Provides a relative path to your source file(s).
        src/main/jni/jni.cpp
        src/main/jni/sqlite3.c)
add_definitions(-D SQLITE_HAS_CODEC) #加密宏定义一定要有
add_definitions(-D SQLITE_TEMP_STORE=2)

3.编译opens

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值