在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4225|回复: 22

[原创] RSA算法的JNI封装思路

[复制链接]
发表于 2020-3-20 17:03:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
JNI(Java Native Interface)是一组API和标准,作用是实现Java和其他语言(主要是C/C++)的通信。出于运算速度等方面的考虑,一些对运算性能要求较高的算法往往是基于C/C++语言(与硬件关联性更强)实现的。如果应用程序需要基于JAVA编程实现时,这就会有一些矛盾。此时,通过JNI技术,Java开发者可以在不了解算法内容的情况下,方便快捷的使用C/C++加密算法的动态库,实现跨语言调用。例如有如下的应用场景:嵌入式终端要基于RSA非对称算法完成与服务器之间的身份认证。终端通过加入加密芯片,可以快速安全实现基于RSA算法的签名验签工作,但是服务器端往往不会外加加密模块,往往会基于Openssl等开源库来移植RSA算法,进而实现高效运算的目的。这些库源码大多基于C语言实现,此时Java开发者就可以借助JNI技术来封装实现签名等功能。
封装步骤如下:
1.使用java编译器生成调用RSA 加解密,签名验签的API头文件。
2.根据生成的头文件和RSA的C源码库开源库,生成一个供JNI接口调用的静态库
3.在JAVA源码中使用Native方法引入动态库的API,编译java程序
最终生成的文件结构如下图:
图片1.jpg
注意事项:
1.Java数据类型和本地数据类型需要做适当的转换,对应关系如下表:
图片2.jpg
2.若在windows下直接使用命令行的形式,注意JDK的版本,较新的版本已经不支持javah 命令,而是使用java -h代替了。

发表于 2020-3-24 12:41:13 | 显示全部楼层
RSA非对称算法不错,现在大家普遍都在使用,楼主的文章学习了。
发表于 2020-3-24 14:29:32 | 显示全部楼层
服务器端往往不会外加加密模块,算法移植到加密芯片中?
头像被屏蔽
发表于 2020-3-24 14:52:05 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2020-3-24 17:18:19 来自手机 | 显示全部楼层
厉害了,这么高科技的技术,佩服,学习了。
发表于 2020-3-24 17:34:46 来自手机 | 显示全部楼层
看了楼主的文章,收获很多,期待后续文章
头像被屏蔽
发表于 2020-3-25 13:12:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2020-3-25 16:20:11 | 显示全部楼层
有没有其他算法的,等楼主更新,mark
 楼主| 发表于 2020-3-25 16:54:03 | 显示全部楼层
现在最新的JDK版本应该使用javac -h ./ + 【文件名】这个命令,./表示在当前目录下生成.h文件
头像被屏蔽
发表于 2020-3-25 17:08:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-29 06:04 , Processed in 0.029827 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表