【前言】
Android要想实现
RSA/AES
之类的加密,最简便的方式是直接使用Android提供的Java层api,但是使用Java层提供的api去加密,别人很容易通过反编译看到你的加密逻辑,然后直接模拟你的加密逻辑去刷接口或者抓包时候直接解密即可,安全系数比较低;要想提高被别人反编译看到加密逻辑的门槛,需要把相关加密逻辑代码放到C层去实现,但是要是自己去实现RSA/AES加密逻辑,那是很浪费时间而且完全没必要的事情,可以借助
Openssl
提供的
crypto
这个库去实现加密或者md5
网上的openssl编译教程大部分都是比较旧的或者是不太详细,故而有此教程详细记录openssl的编译过程
一、环境要求
1、
Linux系统
,可以在
VMware
中装
ubuntu linux系统
2、下载
Linux版 NDK
,解压
二、下载
Openssl
源码
1、在
shell终端
中输入
git命令
下载
openssl源码
到当前目录下
git clone git://git.openssl.org/openssl.git
二、编译源码
1、cd进入到openssl目录下,即
Configure
文件所在目录
2、使用
export命令
新增/修改环境变量
ANDROID_NDK_ROOT
指向你的NDK目录,export 的效力仅限于该次登录操作
export ANDROID_NDK_ROOT=/home/jimmy/android-ndk-r23b-linux/android-ndk-r23b
3、将编译openssl所需的NDK命令所在的目录添加到环境变量
PATH
中
PATH=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
4、运行
./Configure
脚本生成
Makefile文件
,这里指定生成
arm64
的.so
./Configure android-arm64 -D__ANDROID_API__=30
执行完之后会在当前目录下生成一下两个文件
5、使用
make
命令进行编译
make
等待一段时间,执行完之后,就会在当前目录下生成了想要的.so文件了,将生成的两个.so复制到android项目下
arm64-v8a
下即可
6、要想继续生成其他平台的.so, 可以删掉第4、5步生成的文件,重复第4、5步即可
其中,
armeabi
对应
android-arm
,
arm64-v8a
对应
android-arm64
,
x86
对应
android-x86
,
x86_64
对应
android-x86_64
【注意】
除了把生成对应平台的.so拷贝到Android项目之外,记得也得把当前目录下的
include目录
一起拷贝过去用,
include
里面是需要引入的头文件,而且需要注意的一定得
编译完成之后再拷贝
,拷贝没编译前的include文件,到时引入时会报错,因为有些文件是编译时候才生成的