最近在做一个项目,与一个支付渠道进行连接进行充值,为了安全,每个接口访问时,都要先登陆(调用登陆接口),拿到一个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签名、验签、加密、解密的更多相关文章

  1. ios RSA 验签加密解密

    关于公钥和私钥的生成,网上有很多本地生产的方法,我遇到的问题是,按照网上生产的方式生成7个文件,本地使用没有问题,但是和后台交互就不行了. 发现生成公钥和私钥的没有那么麻烦,使用在线生产工具就能使用, ...

  2. RSA签名验签

    import android.util.Base64; import java.security.KeyFactory; import java.security.PrivateKey; import ...

  3. .net core AES加密解密及RSA 签名验签

    引用 using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; using System; using Sy ...

  4. RSA签名验签学习笔记

    RSA私钥签名时要基于某个HASH算法,比如MD5或者SHA1等.之前我一直认为签名的过程是:先对明文做HASH计算,然后用私钥直接对HASH值加密.最近才发现不是那么简单,需要对HASH后的数据进行 ...

  5. js rsa sign使用笔记(加密,解密,签名,验签)

    你将会收获: js如何加密, 解密 js如何签名, 验签 js和Java交互如何相互解密, 验签(重点) 通过谷歌, 发现jsrsasign库使用者较多. 查看api发现这个库功能很健全. 本文使用方 ...

  6. RSA加解密&RSA加验签详解

    RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一.RSA 是第一个能同时用于 加密 和 数字签名 的算法,它能够 抵抗 到目前为止已知的 所有密码攻击,已 ...

  7. RSA密钥生成、加密解密、签名验签

    RSA 非对称加密公钥加密,私钥解密 私钥签名,公钥验签 下面是生成随机密钥对: //随机生成密钥对 KeyPairGenerator keyPairGen = null; try { keyPair ...

  8. [Python3] RSA的加解密和签名/验签实现 -- 使用pycrytodome

    Crypto 包介绍: pycrypto,pycrytodome 和 crypto 是一个东西,crypto 在 python 上面的名字是 pycrypto 它是一个第三方库,但是已经停止更新,所以 ...

  9. C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServic

    C#在using System.Security.Cryptography下有 DESCryptoServiceProvider RSACryptoServiceProvider DESCryptoS ...

  10. RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密

    原文:RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密 C#在using System.Security.Cryptograph ...

随机推荐

  1. Python main()函数解析

    __main__ — Top-level script environment '__main__'是顶级代码执行的作用域的名字. 当一个模块从标准input, 一个脚本文件,或一个交互命令read读 ...

  2. MFC Bitmap::FromBITMAPINFO返回空问题

    领导临时给了一个任务,项目上的一个问题,就是FromBITMAPINFO不成功,之前也没有弄过MFC的东西,但领导让干就干吧.咱也不知道怎么回事,咱也不敢问. 上来直接度娘,试过各种办法,都没与解决, ...

  3. 【树形dp 思维题】HHHOJ#483. NOIP司马懿

    要注意利用一些题目的特殊条件吧. 题目大意 有一颗$n$个点带点权$a_i$的树,$q$次询问树上是否存在长度为$l$的路径. $n,q,l\le 10^5,0 \le a_i \le 2$ 题目分析 ...

  4. puppet完全攻略(二)让puppet代码支持vim高亮显示

    puppet完全攻略(二)让puppet代码支持vim高亮显示 2012-06-10 13:33:01 标签:puppet viong puppet完全攻略 原创作品,允许转载,转载时请务必以超链接形 ...

  5. lVS/haproxy

    haproxy 安装配置   1. 下载及安装 wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.21.tar.gz tar zxvf h ...

  6. php类知识---最疯狂的魔术方法serialize,_sleep,__wakeup,unserialize,__autoload,__clone

    serialize-----把实例化的对象写入文件 __sleep 调用serialize时触发 <?php class mycoach { public function __construc ...

  7. nginx代理服务

    代理----介于客户端和服务器之间 ICMP\POP\IMAP是邮件的收/发相关协议;RTMP是视频,音频等流媒体协议 http代理 正向代理 如果一个公司多台电脑中只有一台电脑能上网,那么不能上网的 ...

  8. 【Layui】Layui模板引擎生成下拉框不显示

    首先让我震惊了一下,layui引擎模板居然是支持ajax操作的 博主的需求是需要在数据表格内放入下拉框而下拉框的数据是数据库内查出来的(详见上一篇博客),但是下拉框怎么也显示不出来 找了四个小时的问题 ...

  9. 07 saltstack生产实例-mysql主从

    1.服务部署 .服务部署 抽象:功能模块 redis 安装.配置.启动 mysql 安装.配置(my.cnf可以统一 目录默认配置可以统一) master: server_id slave: serv ...

  10. 【C#-导出Excel】DataSet导出Excel

    1.添加引用 2.封装方法 using System; using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPO ...