RSA加密解密流程整理【利用java security】

1. RSA加密生成签名的过程【私钥加密】

1.1 准备参数封装成Map

参见代码

getSignResult方法

1.2 去掉Map中value为空及key为签名参数的元素

参见代码

MagCoreUtil中方法paraFilter(sParaTemp)

1.3 生成签名结果

1.3.1 将参数的key按照ASCII顺序排序

参见代码

MagCoreUtil中的createLinkString方法
1.3.2 将Map中参数按照“参数=参数值”模式并以“&”符号连接成String

参见代码

MagCoreUtil中的createLinkString方法
1.3.3 利用上述字符串、私钥及编码格式获取签名结果

参见代码

RSA.sign(prestr, privateKey, inputCharset);

1.4 将签名结果和签名方式添加到Map中

参见代码

MagCoreUtil中buildRequestPara方法

2. RSA解密验证签名的过程【公钥解密】

2.1 流读取方式获取“参数=参数值”并以“&”连接的参数

参见代码

验签代码部分getPostData方法
2.1.1 Spring Boot流读取参数方法

地址

https://my.oschina.net/u/3193075/blog/3080552

2.2 将获取的参数封装成Map

参见代码

验签部分 transferToMap方法

2.3 验证数字签名

2.3.1 去掉value为空及key为sign(签名结果)的数据得到新的Map

参见代码

MagCoreUtil中paraFilter
2.3.2 将上述处理完的Map的Key按照ASCII码排序并封装成“参数=参数值”模式以“&”连接得到String
MagCoreUtil中方法createLinkString
2.3.3 利用RSA验签,参数上述String、签名方式、编码格式和公钥

参见代码

RSA的RSA.verify(src, sign, BdPayCommData.BD_PUBLIC_KEY, charset)方法

2.4 继续其他业务

3. 说明

完整代码参考

https://gitee.com/YuHuaShan/codes/ewaqxptsri46u1lc53nm097

转载于:https://my.oschina.net/u/3193075/blog/3090097

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值