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程序
最终生成的文件结构如下图:

SC7A{~%%4{J]%(30C9R2SL4.png
注意事项:
1. Java数据类型和本地数据类型需要做适当的转换,对应关系如下表:

O1BDS0ZG7ER{I80@@N3JN_3.png
2.若在windows下直接使用命令行的形式,注意JDK的版本,较新的版本已经不支持javah 命令,而是使用java -h代替了。
-
封装
+关注
关注
128文章
9150浏览量
147919 -
RSA算法
+关注
关注
0文章
14浏览量
8058 -
JNI
+关注
关注
0文章
8浏览量
8107
发布评论请先 登录
蜂鸟E203内核和RSA的SOC设计
加密算法的应用
关于蜂鸟E203内核运算算子K扩展的基础知识分享
NTT设计介绍
数据滤波算法的具体实现步骤是怎样的?
非对称密钥生成和转换规格详解
详解芯片封装的工艺步骤
harmony-utils之RSA,RSA加解密
部署WoSign SSL国密RSA双证书,实现国密HTTPS加密
云平台如何部署WoSign SSL“国密RSA双证书”
封装基板设计的详细步骤
FOC 算法实现永磁同步电机调整指南
设计SO-8封装的详细步骤和注意事项

RSA算法的JNI封装步骤
评论