业务逻辑需要使用 NodeJS 进行公钥加密传输给 Java 后端进行私钥解密,但是默认 NodeJS 使用的 RSA padding 模式与 Java 的不一致,所以需要配置。

不啰嗦,上代码,分别用 crypto和 node-rsa进行了加解密实验!

const crypto = require('crypto');

const NodeRSA = require('node-rsa');

let inputString = '我是明文字符串!';

let publicKeyStr = '-----BEGIN PUBLIC KEY-----\n' +

'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCe8g647gv...\n' +

'-----END PUBLIC KEY-----';

let privateKeyStr = '-----BEGIN PRIVATE KEY-----\n' +

'MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGB...\n' +

'-----END PRIVATE KEY-----';

let key = new NodeRSA(publicKeyStr);

key.setOptions({encryptionScheme: 'pkcs1'});

let encryptStr = key.encrypt(inputString, 'base64');

console.log(encryptStr);

key.importKey(privateKeyStr, 'pkcs8-private');

console.log(key.decrypt(encryptStr, 'utf8'));

encryptStr = crypto.publicEncrypt({key:publicKeyStr, padding: crypto.constants.RSA_PKCS1_PADDING}, Buffer.from(inputString, 'utf8'));

console.log(encryptStr.toString('base64'));

let decryptStr = crypto.privateDecrypt({key:privateKeyStr, padding: crypto.constants.RSA_PKCS1_PADDING}, encryptStr);

console.log(decryptStr.toString('utf-8'));

crypto.publicEncrypt(public_key, buffer)

使用 public_key 加密 buffer。目前仅支持 RSA。

public_key 可以是对象或字符串。如果 public_key 是一个字符串,将会当做没有密码的key,并会用RSA_PKCS1_OAEP_PADDING。

public_key:

key : 包含有 PEM 编码的私钥。

padding : 填充值,如下

constants.RSA_NO_PADDING

constants.RSA_PKCS1_PADDING

constants.RSA_PKCS1_OAEP_PADDING

注意: 所有的填充值 定义于constants 模块.

crypto.privateDecrypt(private_key, buffer)

使用 private_key 来解密 buffer.

private_key:

key : 包含有 PEM 编码的私钥

passphrase : 私钥的密码

padding : 填充值,如下:

constants.RSA_NO_PADDING

constants.RSA_PKCS1_PADDING

constants.RSA_PKCS1_OAEP_PADDING

注意: 所有的填充值 定义于constants 模块.

java rsa模块_【HAVENT原创】NodeJS 两个模块进行 RSA 加密解密(匹配Java RSA)相关推荐

  1. AES加密解密(java、web、app)

    AES加密解密(java.web.app) AES加密解密(java.web.app) java端 Web端 ios端 AES加密解密(java.web.app) java端 package com. ...

  2. delphi7aes加密解密与java互转_跨语言(java vs python vs nodejs)的RSA加解密问题探讨

    多次被问到这样的问题: java服务端的rsa加密操作已经完成,返回一个16进制的字符串给python平台,但是在python进行私钥解密的时候发现行不通.... 前端python加密,后端用java ...

  3. nodejs操作sqlserver数据_实例分析nodejs基于mssql模块连接sqlserver数据库的简单封装操作...

    本文主要介绍了nodejs基于mssql模块连接sqlserver数据库的简单封装操作,结合实例形式分析了nodejs中mssql模块的安装与操作sqlserver数据库相关使用技巧,需要的朋友可以参 ...

  4. idea如何把包变为模块_让我们将包变成模块系统!

    idea如何把包变为模块 使用构建系统将许多项目分为模块/子项目( Maven , Gradle , SBT -): 编写模块化代码通常是一件好事. 将代码分为构建模块主要用于: 隔离代码部分(减少耦 ...

  5. python 命令行 模块_深入浅析Python 命令行模块 Click

    Click 是用 Python 写的一个第三方模块,用于快速创建命令行.我们知道,Python 内置了一个 Argparse 的标准库用于创建命令行,但使用起来有些繁琐,Click 相比于 Argpa ...

  6. node.js中模块_在Node.js中需要模块:您需要知道的一切

    node.js中模块 by Samer Buna 通过Samer Buna 在Node.js中需要模块:您需要知道的一切 (Requiring modules in Node.js: Everythi ...

  7. python如何查看有什么模块_在python中如何查看模块功能

    在python中查看模块功能的方法:1.在python命令行输入help()函数进入help帮助文档界面:2.键入[modules]列出当前所有安装的模块:3.键入相应的模块名称即可得到该模块的功能信 ...

  8. 光纤传感器实验模块_光纤传感器实习模块_实习3振动丈量试验模块doc

    自动化专业好吗凭据图安置连合线.贯注电涡流断面与振动台面之间的安置隔绝为线性区域.试验模块输出端TP3接示波器接入±12V电源. 信号源幅度按钮初始为零缓慢增大幅度独揽台面与传感器端面不要碰撞. 用示 ...

  9. python 查看已经安装的模块_教你用Python查看模块的帮助文档,方法和帮助信息...

    这里介绍下python自带的查看帮助功能,可以在编程时不中断地迅速找到所需模块和函数的使用方法 查看方法 通用帮助函数help() python中的help()类似unix中的man指令,熟悉后会对我 ...

  10. python如何导入自定义模块_【python】导入自定义模块

    一.直接import 1.当执行文件与要导入的py文件在同一目录下时 假设要在wangyi.py中导入weibo.py文件 import weibo 2.当执行文件与要导入的py文件所在文件夹在同一目 ...

最新文章

  1. CentOS 7 安装 GlusterFS
  2. phpstudy一个域名配置两个网站(一个是thinkphp5,一个是原生php)
  3. sigmoid函数求导与自然指数
  4. 完整的端到端的机器学习流程(附代码和数据)|比赛、工程都可以用!
  5. conv2d 公式_Pytorch 从0开始学(6)——Conv2d 详解
  6. [poj 3436]最大流+输出结果每条边流量
  7. mathtype注册表
  8. java机房温度监测的仿真_基于三维仿真的数据中心机房监控可视化管理
  9. 【原创】2021-2000上市公司重污染企业数据、上市公司重污染行业数据(常用变量均包括,可直接用)
  10. 主流微信编辑器对比,最好用的竟然是它!
  11. 【软件分析/静态程序分析学习笔记】5.数据流分析基础(Data Flow Analysis-Foundations)
  12. unity 获得当前物体_Unity 中关于获取到物体的方式
  13. 关于 SVN状态图标不显示的问题(只显示绿色钩匹配) 的解决方法
  14. 跑车html5网页模板,html5代码画兰博基尼跑车,6不6?
  15. win10禁用操作系统的服务器,win10服务哪些可以禁止启动 win10哪些服务可以关闭禁用...
  16. 淘宝直通车托管公司怎么样
  17. android安全加固方案,android安全加固技术
  18. 推荐三大文献检索下载网站,超级实用!重点是免费
  19. Ubuntu Kylin系统中配置Apache服务器
  20. 解决一个应用连接oracle端口1521不通问题

热门文章

  1. android蓝牙红外,单片机蓝牙+红外学习转发模块源程序 实现用安卓手机控制所有家电...
  2. 大功率锂电池组BMS(电池管理系统)保护板电路介绍(ACS758/CH704应用案例)
  3. 如何修改文件格式(win11)
  4. ps cc 生成html,Photoshop自定义工具扩展面板(支持PS CC 2019)
  5. 今晚9点!相约ISAC(6G通信感知一体化)在线研讨会!
  6. 云和恩墨大讲堂 - Oracle RAC系列课程强势来袭
  7. 软件工程实训有必要吗_软件工程专业有没有必要考研?
  8. 省市区县街道四级联动下拉菜单
  9. 大学生就业观念的调查与分析
  10. phpstudy的安装及pikachu渗透平台的搭建