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

最新文章

  1. sql 注入问题
  2. iOS中多线程知识总结(一)
  3. hdoj 1022 Train Problem I
  4. 基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理
  5. SpringMVC经典系列-14自己定义SpringMVC的拦截器---【LinusZhu】
  6. [LeetCode] Word Break 解题思路
  7. FullScreenFragment Code
  8. DZY的根(思维水)
  9. Codeforces Round #256 (Div. 2) B Suffix Structures
  10. POJ 1523 SPF (去掉割点能形成联通块的个数)
  11. Python之路-字符编码&数据类型补充
  12. 使用javaMail实现简单邮件发送
  13. J2EE规范标准
  14. vue入门之编译项目
  15. JS 实现版本号比较功能
  16. 如果IBM再给我一次实习机会
  17. bootstrap panel如何实现可拖动并排序
  18. 给table加边框的样式
  19. C# 读写欧姆龙(Omron)PLC ,C#使用Fins-tcp协议读写数据
  20. 吴裕雄 08-MySQL创建数据表

热门文章

  1. Java语言基础(13)
  2. flutter 记录正则匹配
  3. js数据持久化本地数据存储-JSON.parse和JSON.stringify的区别
  4. Java-CharTools工具类
  5. maven的概念-01
  6. word粘贴图片到ckeitor
  7. sh_15_字符串统计操作
  8. JVM GC之对象生死
  9. Apache 服务器 首次访问特别慢的解决过程,php环境
  10. docker之CPU配额参数的混合使用