首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

openssl移植Android使用及其相关经验分享

2012-03-09 
【分享】openssl移植Android使用及其相关经验分享1.linux安装openssl库参见《精通PKI网络安全认证技术与编程

【分享】openssl移植Android使用及其相关经验分享
1. linux安装openssl库

参见《精通PKI网络安全认证技术与编程实现》2.3.2节 Linux下搭建OpenSSL开发环境

Linux下面解压tar.bz2文件:tar jxvf android-ndk-r5c-linux-x86.tar.bz2

 

2. 配置NDK的环境变量

在~/.bashrc文件末尾添加:
NDK=~/android-ndk-r4b
export NDK

 

执行source ~/.bashrc

如果有终端已经运行,需要在重启终端才能使用NDK变量

3. JNI介绍

JNI主要功能就是能够调用到C库,在这里我们需要用C或C++调用openssl库实现加密签名等功能,然后编译成arm体系的so库,用java调用提供的接口。


详细介绍参见此书:《TheJava Native Interface: Programmer’s Guide and Specification》

4. 下载android版本的openssl,编译

现在网上我看见过3种版本的android-openssl,fries版本,eighthave版本以及guardianproject版本,前面两个版本有测试过但是没有尝试成功,guardianproject版本编译成静态库再给android的JNI动态库程序调用的话会找不到方法,不清楚是什么原因,但是直接将JNI程序与openssl工程一起编译就可以实现。

下面这个blog有说编译openssl静态库给android用,但是不知道他用的是什么版本的Openssl,我按照他的方法尝试没有成功。

http://blog.csdn.net/someonea/article/details/6312213

 

guardianproject版本原版下载地址:

https://github.com/guardianproject/openssl-android

我修改过的版本:

http://download.csdn.net/source/3408214

在我修改过的版本中可以直接在myAPP文件夹下编写JNI程序,与Openssl一起打包编译成动态库就行了。

编译时可能出现一些undefined reference,大部分可能是没有添加链接库,有些情况也可能是NDK版本问题,最好用最新版本的NDK(我用的r5c),注意有没添加以下两个静态库

LOCAL_LDLIBS := -lz –ldl

[解决办法]
谢谢分享~~~~
[解决办法]
真好!
谢谢分享,必须加精!
[解决办法]
学习了,谢谢
[解决办法]
不错的,谢谢了
[解决办法]
全国电子竞赛历年真题
[解决办法]
好的答复
[解决办法]
不错的,谢谢了
[解决办法]
领教了~~~~
[解决办法]
好东西~~
[解决办法]
学习,收藏!
[解决办法]
很好,学习了
[解决办法]
好很好
[解决办法]
看上去不错
[解决办法]
xuexi
[解决办法]
KANKANASDASDASD
[解决办法]
欣赏高招
[解决办法]
谢谢分享
[解决办法]
这个要收藏
[解决办法]
android本身源码中自带openssl,直接拿来拖到ndk下就可以编译了。。。另外我不知道lz提供的某篇blog中的静态库为什么不能编译成功?我测试了下应该是可以的。
最后还是感谢lz分享,很喜欢lz分享使用经验和遇到的问题,我觉得这样比网上单纯的叫你怎么编译好多了
[解决办法]
openssl是个好东东啊,可惜当年没有好好研究!
[解决办法]
内容存入剪贴板

[解决办法]

探讨




...这个我也不清楚,自己折腾了很久才弄出来,虽然知道android已经有……


[解决办法]
谢谢了
[解决办法]
好文章
[解决办法]
很好学习了
[解决办法]
收藏了~
[解决办法]
学习了啊
[解决办法]
学习。
[解决办法]
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
[解决办法]
不错,学习!!
[解决办法]
thanks
[解决办法]
thanks
[解决办法]
学习了
[解决办法]
HAO........................
[解决办法]
是个好东东,学习一下
[解决办法]
thanks, mark
[解决办法]
谢谢,真的太感谢了
呵呵

[解决办法]
谢谢,真的太感谢了
呵呵

[解决办法]

[解决办法]
顶啊.............好东西
[解决办法]
先学习了。有问题我会站内短信楼主的。哈哈
[解决办法]
楼主,这个https://github.com/guardianproject/openssl-android是可以编译成功的。
生成了两个.so文件:libcrypto.so和libssl.so
我的gcc是4.3.4
android-ndk-r6。
但是我还有一个问题,我不清楚libcrypto.so和libssl.so的接口,不知道在程序中如何调用他们。
下面,我想问一下,楼主能不能给一个android程序或者java程序来说明如何调用这两个.so文件来实现DES加密之类的。

热点排行