RSA签名、验签、加密、解密
最近在做一个项目,与一个支付渠道进行连接进行充值,为了安全,每个接口访问时,都要先登陆(调用登陆接口),拿到一个sessionKey,后续业务接口内容用它来进行3DES加密处理。而登陆需要用到RSA进行签名加密处理。大概就是这样一个业务流程。
一、密钥生成及管理:
1、交互双方各生成一对密钥:私钥和公钥;
2、自己保留私钥,把公钥给到对方;
3、用自己的私钥进行签名,对方的公钥进行验签;
4、用对方的公钥进行加密,自己的私钥进行解密;
二、需要用到的密钥证书:
1、对方公钥
2、本方公钥
3、本方私钥
三、用户登陆
请求:
1、用【对方公钥】对明文数据进行【RSA加密】,結果進行Base64String ——> InputData
2、用【本方私钥】对明文数据MD5後进行【RSA签名】,結果進行Base64String ——> InputData_Sign
3、取【本方公钥】证书流,結果進行Base64.encode() ——> CerData
4、用【本方私钥】对前置公钥内容MD5後进行【RSA签名】,結果進行Base64String ——> CerData_Sign
响应:
1、用【本方私钥】对SessionKey进行【RSA解密】 ——> SessionKey
2、用【对方公钥】对解密后的SessionKey进行【RSA验签】 ——> SessionKey_Sign
四、业务处理
请求:
1、用【SessionKey】对明文数据进行【3DES加密】 ——> InputData
2、用【本方私钥】对明文数据MD5後进行【RSA签名】 ——> InputData_Sign
响应:
1、用【SessionKey】对返回数据进行【3DES解密】 ——> OutputData
2、用【本方公钥】对解密后的数据进行【RSA验签】 ——> OutputData_Sign
RSA签名、验签、加密、解密的更多相关文章
- ios RSA 验签加密解密
关于公钥和私钥的生成,网上有很多本地生产的方法,我遇到的问题是,按照网上生产的方式生成7个文件,本地使用没有问题,但是和后台交互就不行了. 发现生成公钥和私钥的没有那么麻烦,使用在线生产工具就能使用, ...
- RSA签名验签
import android.util.Base64; import java.security.KeyFactory; import java.security.PrivateKey; import ...
- .net core AES加密解密及RSA 签名验签
引用 using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; using System; using Sy ...
- RSA签名验签学习笔记
RSA私钥签名时要基于某个HASH算法,比如MD5或者SHA1等.之前我一直认为签名的过程是:先对明文做HASH计算,然后用私钥直接对HASH值加密.最近才发现不是那么简单,需要对HASH后的数据进行 ...
- js rsa sign使用笔记(加密,解密,签名,验签)
你将会收获: js如何加密, 解密 js如何签名, 验签 js和Java交互如何相互解密, 验签(重点) 通过谷歌, 发现jsrsasign库使用者较多. 查看api发现这个库功能很健全. 本文使用方 ...
- RSA加解密&RSA加验签详解
RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一.RSA 是第一个能同时用于 加密 和 数字签名 的算法,它能够 抵抗 到目前为止已知的 所有密码攻击,已 ...
- RSA密钥生成、加密解密、签名验签
RSA 非对称加密公钥加密,私钥解密 私钥签名,公钥验签 下面是生成随机密钥对: //随机生成密钥对 KeyPairGenerator keyPairGen = null; try { keyPair ...
- [Python3] RSA的加解密和签名/验签实现 -- 使用pycrytodome
Crypto 包介绍: pycrypto,pycrytodome 和 crypto 是一个东西,crypto 在 python 上面的名字是 pycrypto 它是一个第三方库,但是已经停止更新,所以 ...
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServic
C#在using System.Security.Cryptography下有 DESCryptoServiceProvider RSACryptoServiceProvider DESCryptoS ...
- RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
原文:RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密 C#在using System.Security.Cryptograph ...
随机推荐
- java8学习之方法引用详解及默认方法分析
方法引用: 之前花了很多时间对Lambda表达式进行了深入的学习,接下来开启新的主题---方法引用(Method References),其实在之前的学习中已经使用过了,如: 那方法引用跟Lambda ...
- django 百度分页算法
效果如下: 脚本: 1. 脚本结构 2.pagination.py from django.utils.safestring import mark_safe class Page: ''' curr ...
- Python——import与reload模块的区别
原创声明:本文系博主原创文章,转载或引用请注明出处. 1. 语法不同 import sys reload('sys') 2. 导入特性不同 import 和reload都可以对同一个模块多次加载, ...
- 报表开发工具!DevExpress Reporting v19.1:WPF/Web平台报表
行业领先的.NET界面控件DevExpress Reporting全新发布了v19.1版本,本文主要为大家介绍WPF.Web平台中DevExpress Reporting发布的一些新功能及增强部分功能 ...
- Qt实现多国语言(即界面翻译)可实时进行切换
.在工程文件添加 TRANSLATIONS = debug/lang_English.ts \ debug/lang_Chinese.ts .在需要翻译的地方用上tr 例如:setText(tr(&q ...
- java——通过GenericObjectPool获取到的资源,调用close()方法会close还是returnObject?
一种优雅的关闭资源的方式是使用try(){}cache(){} 就像这样: 这时候,try()里面的资源会在return语句执行结束之后自动调用close()方法,那么问题来了,当我们使用连接池的时候 ...
- linux下ssh免秘钥登录
1.检查防火墙是否关闭 (1)切换到root用户 (2)查看防火墙状态 service iptables status 这是没有关闭 (3)设置关闭 service iptables stop 2.检 ...
- Navicat for MySQL 使用
库创建标准 表查看sql样式
- flask框架(六): 实现支持正则的路由
一:默认路由 @app.route('/user/<username>') @app.route('/post/<int:post_id>') @app.route('/pos ...
- BeetleX之快速构建Web多房间聊天室
其实构建一个Web多房间聊天室也并不是什么困难的技术,借助于websocket就可以轻松实现多用户在线实时通讯交互:在这里主要介绍一下在BeetleX和BeetleXjs的支持下如何让这个功能实现的更 ...