最近在做一个项目,与一个支付渠道进行连接进行充值,为了安全,每个接口访问时,都要先登陆(调用登陆接口),拿到一个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. @font-face字图标问题

    链接:http://www.exp99.com/htmlcss/htmlcss_229.html

  2. JS文件上传代码

    var formData = new FormData(); formData.append("file",$("#File1")[0].files[0]); ...

  3. JS 数组相关的操作函数

    // 1.数组拼接 concat() var a = [1, 2]; var b = [3, 4]; console.log(a.concat(b)); // [1, 2, 3, 4] // 2.数组 ...

  4. python3安装模块,摘自网上

    配置好Python3.6和pip3安装EPEL和IUS软件源 yum install epel-release -y yum install https://centos7.iuscommunity. ...

  5. Web界面开发必看!Kendo UI for jQuery编辑功能指南第一弹

    Kendo UI for jQuery最新试用版下载 Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support f ...

  6. Python之windows锁屏

    简单粗暴,三行代码搞定 from ctypes import * user32 = windll.LoadLibrary('user32.dll') user32.LockWorkStation() ...

  7. gtid 1032错误案例

    gtid 1032错误案例 大致背景: 分别在主从上删除了系统冗余账号. mysql> delete from mysql.user where host='::1';Query OK, 1 r ...

  8. js实现单例

    单例无外乎每次调用返回的都是同一个对象,可以利用闭包实现 function Singleton(){ this.data = "singleton"; } Singleton.ge ...

  9. Servlet中的乱码问题及解决办法

    假设现在有个form表单,当页面中提交一个包含中文的请求时,在服务端有可能出现中文乱码问题. <!DOCTYPE html> <html> <head> <m ...

  10. [Python之路] 使用装饰器给Web框架添加路由功能(静态、动态、伪静态URL)

    一.观察以下代码 以下来自 Python实现简易HTTP服务器与MINI WEB框架(利用WSGI实现服务器与框架解耦) 中的mini_frame最后版本的代码: import time def in ...