0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RSA算法的JNI封装步骤

电子工程师 2020-06-04 17:45 次阅读

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. 根据生成的头文件和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代替了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 封装
    +关注

    关注

    127

    文章

    8114

    浏览量

    143775
  • RSA算法
    +关注

    关注

    0

    文章

    14

    浏览量

    7863
  • JNI
    JNI
    +关注

    关注

    0

    文章

    8

    浏览量

    7888
收藏 人收藏

    相关推荐

    FOC 算法实现永磁同步电机调整指南

    本文档介绍了使用 FOC 算法实现永磁同步电机 (Permanent Magnet SynchronousMotor,PMSM)调整所需的步骤和设置,该算法如 AN1078《PMSM 电机的无传感器
    发表于 03-03 01:53

    设计SO-8封装的详细步骤和注意事项

    设计 SO-8(Small Outline-8)芯片的 PCB 封装需要遵循一定的规范和步骤。SO-8 是一种常见的表面贴装封装,具有 8 个引脚,引脚间距通常为 1.27mm(50 mil)。以下是设计 SO-8
    的头像 发表于 02-06 15:24 524次阅读
    设计SO-8<b class='flag-5'>封装</b>的详细<b class='flag-5'>步骤</b>和注意事项

    【迅为RK3568开发板】嵌入式学习之安卓JNI开发

    P1 jni教程(一) 28:40 P2 jni教程(二) 34:47 P3 jni教程(三) 17:40 https://www.bilibili.com/video/BV18v411i7Dx
    发表于 08-23 09:49

    15W电源方案CR6212SJ+CR40V15RSA-原理图

    该电源方案是基于能够适用于宽输入电压范围,输出功率15W,恒压恒流输出的电源样机,控制IC采用了本公司的CR6212SJ和CR40V15RSA。CR6212BSJ芯片特性:●CR6212BSJ内置
    发表于 08-05 18:18 3次下载

    15.5W电源方案CR6267SK+CR40V8RSA-PCB图

    该电源方案是基于能够适用于宽输入电压范围,输出功率15.5W,恒压恒流输出的电源样机,控制IC采用了本公司的CR6267SK和CR40V8RSA。CR6267SK芯片特点●CR6267SK
    发表于 08-05 18:15 0次下载

    鸿蒙开发:Universal Keystore Kit密钥管理服务 明文导入密钥 ArkTS

    分别以导入AES256与RSA2048密钥为例,具体的场景介绍及支持的算法规格
    的头像 发表于 07-08 10:22 464次阅读
    鸿蒙开发:Universal Keystore Kit密钥管理服务 明文导入密钥 ArkTS

    神经网络反向传播算法的原理、数学推导及实现步骤

    传播算法的原理、数学推导、实现步骤以及在深度学习中的应用。 神经网络概述 神经网络是一种受人脑启发的计算模型,由大量的神经元(或称为节点)组成,每个神经元与其他神经元通过权重连接。神经网络可以分为输入层、隐藏层和输出层。输入层接收外部输入数据
    的头像 发表于 07-03 11:16 1128次阅读

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-scp出现报错no matching host key type found. Their offer: ssh-rsa

    定支持的密钥类型。 第一种修改方法:在每次执行scp命令时加上-o HostKeyAlgorithms=+ssh-dsa,例如:scp -o HostKeyAlgorithms=+ssh-rsa
    发表于 06-29 09:33

    飞凌嵌入式ElfBoard ELF 1板卡-scp出现报错no matching host key type found. Their offer: ssh-rsa

    =+ssh-rsa led root@192.168.0.232:/home/root 第二种修改方法(推荐): 在客户端~/.ssh目录下修改config文件,如果没有config文件就手动创建一个,添加以下内容: Host 服务器IP HostkeyAlgorithms +ssh-
    发表于 06-29 09:30

    怎么用espsecure.py生成RSA秘钥?

    请问,怎么用 espsecure.py 生成RSA秘钥 用命令: espsecure.py generate_signing_key secure_boot_signing_key.pem生成的是ECDSA秘钥 那么二代的RSA用什么命令? 谢谢!
    发表于 06-21 07:30

    mos封装工艺是什么,MOS管封装类型

    MOS封装工艺是指将制造好的MOS管芯片通过一系列步骤封装到外壳中的过程。以下是MOS封装工艺的详细步骤和相关信息:
    的头像 发表于 06-09 17:07 1821次阅读

    泰克频谱分析仪RSA5126B_26.5G仪器无法开机案例

    有收到北京某高校送来的一台泰克频谱分析仪RSA5126B_26.5G维修仪器,当我们打开包装后泰克频谱分析仪RSA5126B_26.5G的外观成色相当不错,经过安泰仪器租赁/维修中心的工程师的仔细排查,下面给大家具体介绍一下泰克频谱分析仪维修情况及使用方法和操作
    的头像 发表于 04-07 11:26 1107次阅读
    泰克频谱分析仪<b class='flag-5'>RSA</b>5126B_26.5G仪器无法开机案例

    鸿蒙OS开发问题:(ArkTS)【 RSA加解密,解决中文乱码等现象】

    RSA加解密开始构建工具类就是举步维艰,官方文档虽然很全,但是还是有很多小瑕疵,在自己经过几天的时间,彻底解决了中文乱码的问题、分段加密的问题。
    的头像 发表于 03-27 21:23 1993次阅读
    鸿蒙OS开发问题:(ArkTS)【 <b class='flag-5'>RSA</b>加解密,解决中文乱码等现象】

    全志R128 SDK HAL 模块开发指南——Crypto Engine

    */ uint32_t dir; uint32_t padding_mode; /*hash算法的填充模式*/ } crypto_hash_req_ctx_t; RSA 算法运算接口 主要实现
    发表于 03-21 10:44