微信支付&支付宝支付学习笔记01

一、在线支付实战(微信和支付宝)-介绍

1、微信支付

①、微信支付介绍和接入指引(对微信支付的支付场景、具体的支付产品进行简单的介绍,带大家了解如何准备支付账号以及如何获取开发过程中需要的支付参数)

②、证书/密钥/签名(支付安全相关的内容,微信支付为了保证交易的安全性,学习证书、密钥、签名的工作机制以及工作原理,帮助我们更好的了解支付接入的细节,了解微信支付的安全性是如何保障的)

③、案例项目的创建

SpringBoot+Vue

Java、MyBatis-Plus、MySQL

HTML、JavaScript、Vue

④、基础支付API V3

⑤、基础支付API V2

2、支付宝支付

①、支付宝支付介绍和接入指引

②、运行和配置案例项目

③、支付功能开发

3、课程特点

①、完整的视频、课件、笔记、源码

②、一套教程从基础理论到应用实践,支付小白轻松入门

③、案例专门针对支付业务开发,包含完整的API接入流程

④、基于流行的SpringBoot+Vue架构,可直接接入常见项目

⑤、涵盖微信支付和支付宝支付

⑥、涵盖微信支付API V3和V2,满足更多企业应用场景

二、微信支付-微信支付产品介绍

1、微信支付官方网站:https://pay.weixin.qq.com/

2、支付产品:https://pay.weixin.qq.com/static/product/product_index.shtml

三、微信支付-接入指引-获取商户号

1、接入指引:https://pay.weixin.qq.com/static/applyment_guide/applyment_index.shtml

选择我有PC网站

四、微信支付-接入指引-获取APPID

1、微信公众平台:https://mp.weixin.qq.com/(申请公众号,再将商户号和APPID进行绑定)

五、微信支付-接入指引-获取密钥和证书

在微信支付商户平台-账户中心-账户设置(API安全)

六、微信支付-微信支付介绍和接入指引总结

看pdf文档

①、获取商户号

②、获取APPID

③、获取API密钥

④、获取APIv3密钥

⑤、申请商户API证书

⑥、获取微信平台证书

七、微信支付-支付安全-对称加密和非对称加密

1、机密性是信息安全的基础,实现机密性最常用的手段就是加密了,那只有掌握特殊钥匙的人,才能对加密的文本进行解密,这里的钥匙就叫做密钥,加密前的消息我们叫他明文,加密后的文本我们叫它密文,使用密钥还原明文的过程呢就叫做解密,加密解密的操作过程呢就是加密算法,所有的加密算法呢都是公开的,而算法使用的密钥呢则必须保密,密钥呢其实就是一个字符串,它的度量单位呢是 位bit

2、对称加密其实很好理解,就是指加密和解密的时候呢?使用的密钥是同一个,是对称的,只要保证了密钥的安全性,那整个通信过程就可以说具有了机密性,因为通信过程中传输的全是用密钥加密后的密文,所以只要消息的发送方和接收方才能解密,那恶意的用户即使能够窃听到我们的消息,看到的也只是加密后的密文,因为没有密钥无法解出明文,所以呢就实现了消息发送的机密性。

优点:运算速度快

缺点:密钥需要信息交换的双发共享,一旦被窃取,消息会被破解

3、非对称加密呢它是有两个密钥啊,一个呢叫做公钥public key,另一个叫做私钥private key,两个密钥呢是不同的,所以呢我们叫它非对称,公钥呢可以公开给任何人使用,而私钥呢必须要严格保密的,使用公钥加密后呢,只能使用私钥解密。那反过来呢私钥加密后呢,也只能使用公钥来解密,非对称加密算法的设计呢要比对称加密算法复杂得多,那RSA可能是其中最著名的一个了,几乎可以说是非对称加密的代名词了,微信支付中的非对称加密算法呢使用的就是这种方式。

优点:私钥严格保密,公钥任意分发,黑客获取公钥无法破解密文

缺点:运算速度非常慢

总结概括

如果我们在互联网上传输信息的话,通信速度呢是无法保证的,所以一般情况下,如果要保证信息传输的安全性,一般呢都是对称加密和非对称加密相结合的,例如我们可以用非对称加密的方式先传输对称加密需要的密钥,这样呢可以保证密钥被安全的传递,那后期的信息交换的过程呢就可以安全地使用对称加密进行了,这样既能保证对称加密需要的密钥呢不会在传输的过程当中被拦截、被窃取,又能保证在后续的信息传输的过程当中加密和解密的效率,那么我们知道的https的底层协议呢,其实使用的就是这个原理

八、微信支付-支付安全-身份认证

1、前面我们学习了对称加密和非对称加密实现了信息传输的机密性,但仅有机密性离安全还差得很远

2、私钥加密、公钥解密的作用呢其实就是身份认证

九、微信支付-支付安全-数字签名

如何保证信件不被篡改,即信息的完整性?

实现完整性的手段主要是摘要算法(Digest Algorithm)也就是常说的散列函数、哈希函数(Hash Function),它是一种数据映射关系,为了方便举例,我们假设一个任意长度的字符串数据z经过哈希运算之后呢,会得到固定长度的字符串数据h,那么我们说h就是自己的哈希结果又称作数据指纹或者是摘要。你可能听说MD5,其实MD5呢就是一个非常典型的摘要算法,例如我们这里面有两个字符串a和aaa,那么经过MD5运算之后得到的哈希结果虽然是不同的,但是它们的长度是一样的,所以呢我们说有任意长度的z经过哈希运算之后,可以生成一个固定长度的h

那摘要算法呢需要有以下的四种特性:

1、不可逆:只有算法,没有密钥,只能加密,不能解密(我们把摘要算法和前面我们提到过的AES以及RSA做个比较,AES算法呢属于对称机密的一种,因为它需要一个密钥去加密和解密,而RSA算法呢是非对称加密的典型算法,它需要两把钥匙,公钥和私钥,那在加密和解密的过程当中呢,都需要用到这两把钥匙,因此呢无论是对称加密还是非对称加密,那么我们解密的时候都是需要钥匙的,但是我们现在看到的这个摘要算法,它只有算法,没有密钥,加密后的数据呢是没有办法解密的,不能从摘要逆推出原文,也就是只能把z加密成h,但是呢不能从h解密出z)

2、难题友好性:想要破解,只能暴力枚举

3、发散性:只要对原文进行一点点改动,摘要就会发生剧烈变化

4、抗碰撞性:原文不同,计算后的摘要也要不同

常见摘要算法:MD5、SHA1(不具有强的碰撞性)、SHA2(SHA224、SHA256、SHA384)

加入密钥确保我们信息的机密性,第一个步骤呢,Bob写完信之后呢,先用摘要算法生成信件的摘要,第二个步骤Bob使用自己的私钥将摘要加密,加密后的结果我们称为数字签名,第三个步骤Bob将数字签名附在信的原文下面一起发给Pat。Pat收到信之后呢,也是三个步骤,第一个步骤,Pat取下数字签名,用Bob的公钥解密,得到信件的摘要,第二个步骤Pat使用和Bob一样的摘要算法加密信件的原文得到信件的摘要,那第三个步骤Pat将前面两步得到的摘要进行比对,如果一致,信件就是Bob发的,并且是没有经过篡改的,这个过程我们称为验签(验证签名的意思)

那么通过Bob的签名流程和Pat的验签流程,我们发现,即使黑客修改了信件的原文,即使黑客能够通过摘要算法生成新的摘要,但是因为他没有Bob的私钥,因此呢就无法对摘要进行加密,无法生成只能有Bob才能生成的签名,所以呢这个信也就没有办法被篡改了,那微信支付中的签名和验签的过程呢就是这个原理,那么经过以上的步骤呢,Pat就可以将信件的原文取出来了。那刚刚我们讲的这个流程呢,主要针对数字签名,数字签名可以保证信息传递的过程中不可以被篡改以及信息传递者的身份的认证。

十、微信支付-支付安全-数字证书

首先Dog想要欺骗Pat,它将自己的公钥发送给Pat,并且谎称这是Bob的公钥,此时Pat实际拥有的是Dog的公钥,因此Dog就可以冒充Bob用自己的私钥做成数字签名写信给Pat,那Pat用假的Bob的公钥验签,验签是可以成功的,Pat误以为是在和Bob通信,但其实对方是Dog,那这个场景就相当于你误以为是在和微信支付的服务器在通信,但实际上是在和黑客通信。

公钥的信任:黑客可以伪造公钥,怎么判断公钥是真实的?

数字证书:什么是数字证书?一个证书包含有很多的信息

①公钥,为了防止Bob的公钥被伪造,公钥不会采用直接公开发布的形式了,那它会被放在数字证书中,如果是Bob的数字证书,那么Bob的公钥会被包含在这个数字证书中。

②所有者,指的是证书的申请者,一般是某个人或某个公司或者是某个公司的网址域名,刚才的场景所有者就是Bob

③颁发者,数字证书要由一个第三方的机构来颁发,这个第三方机构就是我们常常听说的CA(证书认证机构),CA具有极高的可信度,由它来给各个公钥进行签名,用自身的信誉来保证公钥没有办法被伪造,这个是非常可信的

④有效期,也就是证书的使用期限,过了有效期,证书就会被作废,不能使用了,需要重新申请

⑤签名哈希算法,指摘要算法,证书的存在呢?是为了数据传输的安全,那证书本身也一组信息,为了防止证书本身被篡改,那CA在颁发证书的时候,根据指定的摘要算法计算证书的摘要,有的时候我们也把它叫做证书的指纹,然后呢?将证书的指纹也放在证书的基本信息中

⑥指纹,目的保证证书数据的完整性和不可被篡改性

⑦签名算法,用于生成签名,确保证书是CA签发

⑧序列号,证书的唯一标识

接下来我们看下CA为Bob颁发数字证书具体的流程,首先CA用证书信息中指定的Hash算法,根据证书信息计算整个证书的摘要,也就是证书的指纹。然后呢,CA根据证书当中的签名算法用CA自己的私钥将摘要进行加密,生成证书的签名,最后把证书和签名的基本信息一起发布,那么Bob就得到了一个数字证书。Bob拿到数字证书以后呢,就可以放心了,他再给Pat写信,只要在签名的同时,再附上数字证书即可。Pat收到信以后呢?先把数字证书从信件中取出来,接着对数字证书当中的证书签名进行验证,那流程跟我前面的验签流程类似的。Pat用证书信息中的Hash算法,根据证书信息计算整个证书的摘要,并且呢,使用CA的公钥从数字证书的签名中解析出数字证书的摘要,然后将两个摘要进行比较,如果两个摘要一致,则说明我们的验签是通过的,如果验签通过了,Pat就可以从数字证书中获取Bob的公钥了,因为在数字证书中定义了证书的所有者,这样Dog就没有办法去伪造数字证书了,因为他向CA申请数字证书的时候,必须提供真实的身份,那么CA呢?也会对身份进行核实,那么经过前面的步骤呢?我们已经可以确认Pat拿到Bob的公钥呢是真实的,接下来需要使用Bob的公钥对信件的签名进行验证,那么和前面一样,需要先使用Hash算法计算信件的摘要,然后呢?用刚从数字证书中得到Bob的公钥,对信件的签名呢进行解密,得到信件的摘要,接下来呢,还是要将两个摘要进行比较,如果一致则验签通过。

十一、微信支付-支付安全-https中的数字证书

看一下应用数字证书的具体的场景,也就是https协议,这个协议主要用于网页加密。首先呢有一个网站它要使用https协议,因此呢网站需要向CA申请数字证书,那CA呢用自己的私钥对数字证书的基本信息进行了加密并且进行了签名,那不知道大家还记不记得数字证书的基本信息当中是存有网站公钥的,有了数字证书和一些必要的条件之后呢,网站就可以以https协议的形式发布在互联网上了。那这个时候呢有一个客户端浏览器向这个网站发出了一个加密的请求,那网站对网页进行加密之后呢,会连同它的数字证书一起发送给这个客户端的浏览器,那么客户端的浏览器接收到服务器发送过来的数字证书之后呢,会使用CA的公钥去解密这个数字证书,并对数字证书进行验签,那CA的公钥呢就是证书认证机构的公钥,那默认情况下,我们的操作系统当中都会有权威的CA证书列表,那么CA证书列表里面呢就会存有CA的公钥,那与此同时呢,客户端也会判断当前访问的网址和数字证书信息中证书持有者是不是一致的,那么如果不一致呢,那说明这个网站是伪装的,例如我们之前的那个例子,Dog伪装成了Bob与Pat进行通信,那因此呢有了数字证书之后,这种情况呢就不会发生了。那还有一些情况呢,比如说数字证书过期,或者是数字证书被吊销,或者是颁发数字证书的CA机构呢不是特别正规,那这些情况呢,我们的浏览器呢都会发出一些网站不安全的一些警告信息,如果数字证书是可靠的,客户端呢就可以顺利地从证书中获取到网站的公钥了,接下来呢客户端就可以使用网站的公钥对信息进行加密,然后呢与网站进行通信了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值