RSA加密解密流程整理【利用java security】
2019-08-14 14:11
591 查看
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
相关文章推荐
- java 实现RSA 加密解密工具类及其内部简单流程
- security.js RSA 加密与java客户端解密
- Java-web中利用RSA进行加密解密操作的方法示例
- JAVA利用RSA加密算法的长度限制问题解决方案注意: RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行。 RSA加密对明文的长度是有限制的,如
- iOS and JAVA 的 RSA 加密解密 (转载整理 )
- 微信公众号开发加密解密异常java.security.InvalidKeyException:illegal Key Size
- 用javascript与java进行RSA加密与解密
- java RSA加密解密
- 利用openssl进行RSA加密解密
- java RSA 加密解密算法 入门
- IOS and JAVA 的 RSA 加密解密
- C# Java间进行RSA加密解密交互(三)
- php java go RSA加密解密,加签验签
- C# Java间进行RSA加密解密交互 .
- 微信公众号开发加密解密异常java.security.InvalidKeyException:illegal Key Size
- Java与Node.js利用AES加密解密出相同结果的方法示例
- Java生成RSA非对称型加密的公钥和私钥(利用java API)
- java RSA 不对称加密密钥生成、加密解密实例
- java加密解密--RSA
- 利用openssl进行RSA加密解密