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代替了。

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

    关注

    126

    文章

    7767

    浏览量

    142698
  • RSA算法
    +关注

    关注

    0

    文章

    14

    浏览量

    7796
  • JNI
    JNI
    +关注

    关注

    0

    文章

    8

    浏览量

    7856
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

    嵌入式学习-飞凌嵌入式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 1451次阅读

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

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

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

    RSA加解密开始构建工具类就是举步维艰,官方文档虽然很全,但是还是有很多小瑕疵,在自己经过几天的时间,彻底解决了中文乱码的问题、分段加密的问题。
    的头像 发表于 03-27 21:23 1671次阅读
    鸿蒙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

    TC233/TC234系列中的HSM硬件支持哪些加密算法

    HSM 中支持的算法:你能否具体说明 TC233/TC234 系列中的 HSM 硬件支持哪些加密算法? 特别是,我有兴趣了解对 AES、CMAC、RSA、ECC 和 SHA 的支持。 2. 具有类似
    发表于 01-18 10:33

    芯片封装封装步骤

    芯片封装是将芯片封装在外部保护壳体内的过程,通常包括以下步骤
    的头像 发表于 12-18 18:13 1940次阅读

    普源RSA5000系列频谱分析仪介绍

    普源RSA5000系列频谱分析仪是一种用于测量和分析信号的频谱特性的仪器。它能够测量信号的频率、幅度、相位等参数,并可以分析信号的频率成分、功率谱密度、倒谱等特性。下面将详细介绍普源RSA
    的头像 发表于 12-01 17:50 559次阅读
    普源<b class='flag-5'>RSA</b>5000系列频谱分析仪介绍

    写好的C算法模块怎么样封装成SigmaStudio里能用的图形模块呢?

    请教下写好的C的算法模块,怎么样封装成SigmaStudio里能用的图形模块呢?哪里有关于这个的方法说明文档?谢谢!
    发表于 11-30 06:42

    RIGOL普源RSA3015频谱分析仪的应用场景介绍

    普源RSA3015频谱分析仪是一款高性能、宽频率范围、多功能的频谱分析仪器。它具备高精度、高分辨率、快速扫描等特点,适用于各种复杂的信号分析和测量任务。该仪器能够提供稳定的本振信号,实现宽频带接收
    的头像 发表于 11-27 18:12 541次阅读
    RIGOL普源<b class='flag-5'>RSA</b>3015频谱分析仪的应用场景介绍