前言

本文主要说明在第三方支付系统开发过程中,网银支付接口开发开发随笔总结。

一、常用加密类型分类

1、对称加密:采用单钥对信息进行加密和解密,即同一个秘钥既可以对信息进行加密,也可以进行解密。此类型称之为对称加密。特点速度快,常用于对大量数据信息或文件加密时使用。常用例子:DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES。

具体java例子可详见附件:DesUtil

2、非对称加密:采用公钥和私钥双钥形式对信息进行加密和解密,其中公钥和私钥是成对存在的,即使用公钥对信息加密后的密文只用使用其相应的私钥才可以进行解密,反之也毅然。相对对称加密而言叫做非对称加密。安全性非常好,但加密和解密耗时较长,比较适用于小数据量加密解密。常用例子:数字签名、RSA。

具体java例子可参见附件:RsaUtil

二、数据传输流程说明

1、术语解释

公钥:非对称加密算法双钥对中可向外界公开的称为公钥 (PublicKey)。在网银支付时一般需第三方支付系统将自己的公钥提供给银行,同时银行也会将它们的公钥提供给第三方支付系统。

私钥:非对称加密算法双钥对中不可向外界公开的称为私钥 (PrivteKey)。在网银支付时私钥一般需第三方支付系统妥善保存在自己系统中用于对接收到的银行指令进行验证。

加密解密:在非对称加密中,使用公钥对信息处理称之为加密,使用私钥对公钥处理后的加密密文反转过程称为解密,加密解密在对称加密算法中不做解释。

签名验证签名:只能使用在非对称加密算法中,使用私钥进行签名,公钥进行验证签名,原理是使用私钥对信息生成加密hashCode摘要,同信息一同发送给公钥持有方,公钥持有方会使用公钥对信息生成加密hashCode摘要与私钥生成的进行比较的过程就要做签名、验证签名。

2、流程说明

注:Au:第三方支付公钥        Ai:第三方支付私钥       Bu:银行公钥     Bi:银行私钥

(1)第三方支付-->银行流程:第三方支付系统向银行发送信息流程

第三方支付系统会使用自己的私钥对传输传输信息进行签名,签名后将签名密文信息与信息一同使用银行提供给第三方支付系统银行公钥进行加密。加密后将信息传输给银行,银行接收到第三方支付系统传输过来的信息,首先会用银行自己的私钥对信息进行解密,解密后再使用第三方支付系统提供给银行的公钥信息对信息进行验证签名,验证通过后此流程完成。

(2)银行--->第三方支付:银行向第三方支付系统发送信息流程

银行会使用自己的私钥对传输信息进行签名,签名后将原文和密文信息一同使用第三方支付系统提供的公钥信息进行加密,将加密后信息传输给第三方支付系统,第三方支付系统接受到银行发送过来的信息后,使用自己的私钥对信息进行解密,再使用银行提供的公钥对解密后信息进行验证签名,验证签名通过后此流程完成。

三、CA数字证书

CA数字证书的使用目的是为了防止您提供给对方的公钥信息不被他人替换,其原理只是到相关证书中心进行申请,证书中心会对你的信息和公钥信息一起加密,从而获得一个只属于你的证书就是CA数字证书。对方在验证签名过程中需要使用证书中心的提供的公钥来解开你的CA数字证书,从而获得你的公钥信息进行验证签名,从而确认你的身份。

四、HTTPS

简单讲是HTTP的安全版,通道使用的依旧是HTTP通道(端口由80变为了443),只是在其通道的基础上添加了SSL安全基础,即在http通道的基础上增加了身份验证和传输加密。其中SSL协议在网络层次上位于HTTP之后TCP/IP之间,为数据通讯提供安全支持。
SSL协议可分为两层:
SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

SSL协议提供的服务主要有:
1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
2)加密数据以防止数据中途被窃取;
3)维护数据的完整性,确保数据在传输过程中不被改变。

SSL协议的使用流程说明:
1)当客户端向服务器发送一个会话连接请求。
2)服务器接收到客户端的请求后,会根据客户端的会话请求信息进行判断此客户端是否已经存在对称加密密钥,从而判断是否需要产生一个新的密钥,如果需要客户端产生一个新的对称密钥,会将SSL 协议的版本号,加密算法的种类,随机数数字签名、CA数字证书及其他相关信息响应给客户端。
3)客户端接收到服务器端的响应信息,会通过CA数字证书是否过期、发行服务器证书的CA是否可靠、使用CA证书中存储的公钥能否正确验证服务端的数字签名、服务器证书上的域名是否与服务器的实际域名相同等手段对服务端响应信息进行验证。
4)客户端验证服务端通过后,会使用服务端的响应信息生成一个对称密钥(通讯密码),然后使用服务端的公钥(可从CA证书中获取)对此密钥加密,然后将加密后的密文信息传输给服务器。(如果服务端需要对客户端进行验证时,可要求客户端生成一个随机数,然后使用ca证书进行数字签名,然后将签名密文和随机数一同发给服务端,服务端使用CA证书对其进行验证签名,验证通过后即服务端验证客户端完成)
5)服务器接收到客户端请求后,会对其检查客户端传过来的密文,使用自己的私钥对其进行解密,获得对称密码(通讯密码)。
6)客户端会向服务端表明发出信息,表明以后与其通讯会使用此对称密码对进行通讯。
7)服务端接收到客户端发出的使用此密码的消息后,会将对称密码记录下来,在第2)步就对其进行判断。
8)此流程完成后就可以安全使用HTTPS进行通话了。通话过程中会使用对称密钥对通话信息进行加密。

//HTTPS 参考地址如下所示

http://hi.baidu.com/zkheartboy/item/f5f729925c1d8bf129164757

网银支付 加密解密说明相关推荐

  1. 叙述无保密机制的rsa签名过程_安全系列之——RSA的公钥私钥有多少人能分的清楚?RSA的签名验签与加密解密如何使用公私钥?...

    在对接很多的互联网公司的开发平台时,这些互联网公司未来自身平台的安全,都会需要调用方签名确认调用方的身份是合法的,同时未来信息网络传输的安全可能还需要加密解密.比如对接支付宝.微信开放平台时,需要配置 ...

  2. .NET Core 使用RSA算法 加密/解密/签名/验证签名

    前言 前不久移植了支付宝官方的SDK,以适用ASP.NET Core使用支付宝支付,但是最近有好几位用户反应在Linux下使用会出错,调试发现是RSA加密的错误,下面具体讲一讲. RSA在.NET C ...

  3. 在Java中使用DES加密解密算法

    import javax.crypto.*; import javax.crypto.spec.DESKeySpec; import java.security.NoSuchAlgorithmExce ...

  4. jmeter 加密解密_AES加密的安全问题

    aes加密简介 AES算法全称Advanced Encryption Standard,是DES算法的替代者,旨在取代DES成为广泛使用的标准,于2001年11月26日发布于FIPS PUB 197, ...

  5. .Net中加密解密相关知识

    最近在看我所在项目系统里支付方面的代码,里面包括很多加密解密方面的知识,结合平时对加密解密的了解,对.net里加解密做一个总结. 最开始遇到加密解密,可能和大家一样,MD5加密,读大学的时候 ,我喜欢 ...

  6. 网络通信中的加密解密及openssl和创建私有CA详解

    本文大纲: 1.为什么网络通信要进行数据加密? 2.数据加密方式有哪些?它们是如何进行加密的? 3.通信中是如何进行数据加密传输的? 4.https方式进行数据传输的具体流程 5.SSL 的实现工具O ...

  7. SpringBoot 接口加密解密,新姿势!

    我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华.如果小伙伴们觉得不错就一键三连吧~ 声明:原文作者:微信公众号:方志朋 文章目录 1 . 介绍 2 . 前置知识 2.1 hutool-cry ...

  8. PB DES、3DES加密解密(简单便捷)

    PB DES\3DES加密解密 通过VDN的uo_vdncore组件快速简单实现PB的DES.3DES.AES.RSA.Base64.Hex.SHA.MD5.HMac等类型的加密解密,本章我们主要讲解 ...

  9. 国密加密解密之vue-sm2使用

    一些加密的说明,本文主要是sm2 1.SM1是一种分组加密算法 对称加密算法中的分组加密算法,其分组长度.秘钥长度都是128bit,算法安全保密强度跟 AES 相当,但是算法不公开,仅以IP核的形式存 ...

  10. 如何选择合适的网银支付接口

    网银支付接口是每一家商城必须的,如何选择接口就是一门学问. 1.知名度:知名度几乎等同于认可度和安全性,一家知名的公司,市场的认可是毫无疑问的,顾客在付款的时候也比较放心,这样的支付接口主要有支付宝, ...

最新文章

  1. 【Python】ime series:时间序列
  2. 输入10个数,根据提示进行从小到大输出或从大到小输出
  3. ECCV 2020《Linguistic Structure Guided Context Modeling for Referring Image Segmentation》论文笔记
  4. git commit时出现unable to auto-detect email address错误
  5. 【数据结构与算法】之旋转图像的求解算法
  6. 为什么ui框架设计成单线程_评估UI设计的备忘单
  7. oracle RAC切换归档
  8. 计算机键盘输入法基础知识,教程计算机基础知识-:认识输入法
  9. 哪些异常是RuntimeException?Sql异常属于RuntimeException吗?Spring下SQL异常事务回滚
  10. 实验11 链表 程序1奇数值结点链表
  11. Raki的读paper小记:FLAT: Chinese NER Using Flat-Lattice Transformer
  12. 全球各大运营商代码。方便国外卡的朋友修改运营商显示
  13. linux根文件系统编译和移植过程
  14. 工作纪实_17-正则表达式收藏
  15. TensorFlow系列专题(一):机器学习基础
  16. openEuler | 树莓派安装openEuler-Raspi
  17. 播客接棒在线音频的盈利梦
  18. SpringBoot脏话过滤、登陆拦截?一看就会!
  19. docker的五种网络模式
  20. 现代文学作品选知识点整理

热门文章

  1. Java8新特性 方法引用(四)
  2. 电视台工作计算机管理,电视台工作岗位有哪些
  3. 15分钟快速搭建属于自己的网站
  4. WKWebView OC与JS交互
  5. 打开chm手册显示已取消到该网页的导航
  6. 【IOS篇】Cocos2d-x 集成Chartboost广告
  7. 拼写检查工具是android,Android基础知识之拼写检查框架
  8. 2022-2023年度的AMC数学竞赛报名时间来了
  9. java关于Exception(异常)的详解
  10. Dapps解封大众市场的动力