RSA算法的JNI封装思路

发布时间:2020-3-20 13:03    发布者:zntsbkhhh
关键词: RAS算法
RSA算法的JNI封装思路

      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. 根据生成的头文件和RSAC源码库开源库,生成一个供JNI接口调用的静态库
   3. JAVA源码中使用Native方法引入动态库的API,编译java程序
   最终生成的文件结构如下图:
SC7A{~%%4{J]%(30C9R2SL4.png
    注意事项:
    1. Java数据类型和本地数据类型需要做适当的转换,对应关系如下表:
O1BDS0ZG7ER{I80@@N3JN_3.png

2.若在windows下直接使用命令行的形式,注意JDK的版本,较新的版本已经不支持javah 命令,而是使用java -h代替了。

本文地址:https://www.eechina.com/thread-579443-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
明亮的光 发表于 2020-3-23 14:22:12
RSA非对称算法不错,现在大家普遍都在使用,楼主的文章学习了。
?-о 发表于 2020-3-23 15:05:18
服务器端往往不会外加加密模块,算法移植到加密芯片中?
zntsbkhhh 发表于 2020-3-23 18:34:43
服务器端的软件可以通过JNI接口调用RSA算法库,这个库是在服务器端,而不是加密芯片端。
Test_wf 发表于 2020-3-23 19:43:30
厉害了,这么高科技的技术,佩服,学习了
wang0327 发表于 2020-3-23 20:30:13
看了楼主的文章,收获很多,期待后续文章
小屁孩123 发表于 2020-3-23 23:21:45
是吗?现在都使用java -h了,什么时候开始的?
tyl2010 发表于 2020-3-24 12:55:08
有没有其他算法的,等楼主更新,mark
miniminimini 发表于 2020-3-24 13:04:28
现在最新的JDK应该用,java -h ./+ 文件名,./表示当前路径,下生成.h文件
QL87 发表于 2020-3-24 15:05:26
也就是说加入加密芯片后终端就可以通过加密芯片直接进行签名验签,是这个意思吗?
xiaoyuhzou1228 发表于 2020-3-24 15:15:02
终端通过加密芯片,进行签名验签是对的,最主要的是加密芯片可以保护好对应的密钥,保证安全
kessy1 发表于 2020-3-24 17:11:47
JNI说明很实用,有没有详细的操作代码提供呢?
Test_wf 发表于 2020-3-24 18:33:19
不错真厉害,虽然不明白什么意思先赞一个。期待后续更多的试用技术
明亮的光 发表于 2020-3-24 18:38:30
楼主行内高手能否推荐推荐一款这方面的加密芯片
QL87 发表于 2020-3-25 08:21:15
在这方面的加密芯片做的比较好的还是凌科芯安家的 我们客户有跟他们家合作,说他们的加密芯片靠谱又安全。
?-о 发表于 2020-3-25 10:57:06
什么是JNI?
miniminimini 发表于 2020-3-25 11:08:43
JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).这是  百度百科上说的.通俗来说,就是JAVA调用C/C++函数的接口.如果你要想调用C系列的函数,你就必须遵守这样的约定.
Test_wf 发表于 2020-3-25 11:54:22
这篇文章对我们技术太有用了,我收藏了,希望楼主多分享
小屁孩123 发表于 2020-3-25 13:18:26
openssl没有java实现的代码吗?
xiaoyuhzou1228 发表于 2020-3-26 09:28:20
小屁孩123 发表于 2020-3-25 13:18
openssl没有java实现的代码吗?

都是C和C++的 目的就是提高运行效率 JAVA还得跑虚拟机 会慢很多
12下一页
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表