js使用crypto实现md5WithRSA加密及验签

摘要:
sign.end();}catch(err){console.log('RSA加密-------------------------');}签名验证尝试{letpubKeyName='pri.pem';'keys/'+pubKeyName)).toString();

最近使用node对接一家支付三方,对方使用的是java

要求使用RSA加密 使用的算法是 md5WithRSA  encoding是utf8 输出是base64

在使用crypto-js和node-rsa无果后 查阅了node官方文档的crypto找到了答案

js使用crypto实现md5WithRSA加密及验签第1张

 createSign方法传入加密算法创建一个sign对象,当然算法不是全部都支持的 

js使用crypto实现md5WithRSA加密及验签第2张

 使用getHashes()方法可以查到能使用的算法 正好 我们需要的md5WithRSA  在其中 (在这是md5WithRSAEncryption)

加密

try {
    let priKeyName = 'pri.pem';
    let priKey = fs.readFileSync(path.resolve(__dirname, path.join(SELF_ROOT_PATH, 'keys/'  + priKeyName))).toString();
    let sign = crypto.createSign('md5WithRSAEncryption');
    sign.update(signString, 'utf8');
    sign.end();
    let signature = sign.sign(priKey, 'base64');
} catch (err) {
    console.log('RSA加密 -------------------------');
    console.log(err);
}

验签

try {
    let pubKeyName = 'pri.pem';
    let pubKey = fs.readFileSync(path.resolve(__dirname, path.join(think.ROOT_PATH, 'keys/' + pubKeyName))).toString();
    let verify = crypto.createVerify('md5WithRSAEncryption');
    verify.update(signString, 'utf8');
    verify.end();
    let res = verify.verify(pubKey, signature, 'base64');
    console.log(res)
} catch (err) {
    console.log('RSA加密 -------------------------');
    console.log(err);
}

  

免责声明:文章转载自《js使用crypto实现md5WithRSA加密及验签》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇联想笔记本电脑Ubuntu系统下触摸板的锁定objdump命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

yii框架中findall方法取数据使用总结,包括select各种条件,where条件,order by条件,limit限制等

在yii框架中可以使用映射类的find方法取出一条数据或者用findall方法取出数条数据来,那么如何按照所需条件来取数据呢,主要用到了CDbCriteria这个类,这个类是yii自带的操作数据库的支持类,可以作为参数传递给find等方法,这里用findall做个例子: 比如我要取出videoinfo表中的'v_id','title','big_class...

U_Net原理及tensorflow的实现

Unet——用于图像边缘检测,是FCN的改进 如上图是UNET的架构图,可以发现器输入图像和输出图像不一致,如果我们需要输入图像和输出图像一致时,在卷积时,使用padding=“SAME”即可,然后再边缘检测时,就相当与像素级别的二分类问题,用交叉熵做loss函数即可。但位置检测常用IOU作为loss函数。 个人觉得UNET的优点: 1.Unet的去除了...

nodejs版实现properties后缀文件解析

1、propertiesParser.js let readline = require('readline'); let fs = require('fs');// properties文件路径 let local = 'zh', url = local == 'zh' ? /public/messages_zh.properties' :...

My97日历控件常用功能记录

My97相信大家都不陌生,应该是我所见过的最强大的一个日历控件了,最近的项目中也比较多地用到了此控件,而且项目中经常会有不同时间范围的需求,在此列出一些比较常用的日期范围格式的设置,尽管在My97的官方文档中有很详细的介绍,正是因为很详细所以查找起来不是很方便。 1 可以选择任何日期 <input id="txtDate" class="Wdate"...

javascript base64 编码,兼容ie6789

用Javascript进行base64编码,在高版本的IE浏览器(IE9以上版本),和firefox,chrome浏览器里是非常方便的。这些浏览器的window对象中内置了base64的编码和解码方法。 var base64String = window.btoa(string) ;//编码 var string = window.atob(base64s...

phpBB3导入版面的Python脚本

关联的数据表 在phpBB3中导入版面时, 需要处理的有两张表, 一个是 forums, 一个是 acl_groups.  如果是干净的论坛, 可以不保留安装时填入的默认分区和版面, 直接用以下语句初始化: -- 清空 forums 表 TRUNCATE phpbb_forums; -- 清空 acl_groups 表 TRUNCATE ph...