微信支付Native(一)准备和相关知识

原文链接:微信支付Native(一)准备和相关知识 – 编程屋

目录

1 需要准备相关参数

2 支付安全

2.1 对称加密和非对称加密

2.2 数字签名

2.2.1 摘要算法

2.3 数字证书

1 需要准备相关参数

1)获取商户号

微信商户平台:https://pay.weixin.qq.com/

场景:Native支付

步骤:提交资料=》签署协议=》获取商户号

2)获取APPID

微信公众平台:https://mp.weixin.qq.com/

步骤:注册服务号=》服务号认证=》获取APPID=》绑定商户号

3)获取API秘钥

API版本的接口需要此秘钥

步骤:登录商户平台=》选择账户中心=》安全中心=》API安全=》设置API秘钥

4)获取APIV3秘钥

APIv3版本的接口需要此秘钥步骤:登录商户平台=》选择账户中心=》安全中心=》API安全=》设置APIv3秘钥

5)申请商户API证书

APIv3版本的所有接口都需要;APIv2版本的高级接口需要(如:退款、企业红包、企业付款)

步骤:登录商户平台=》选择账户中心=》安全中心=》API安全=》申请API证书

2 支付安全

2.1 对称加密和非对称加密

按照秘钥的使用方式,加密可以分为两大类:对称加密和非对称加密

1)对称加密:加密和解密的时候秘钥都是同一个,对称加密算法常见的有:

AES加密算法,秘钥长度128、192或256、安全强度很好,性能很高。

加密分组模式:将明文分组加密,微信支付中使用AEAD_AES_256_GCM

优点:运算速度快

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

2)非对称加密

非对称加密有两个秘钥,一个是公钥,一个是私钥,两个秘钥不同。

使用公钥加密后只能用私钥解密,反过来,私钥加密后也只能用公钥解密。其中RSA算法加密算法就是最著名的非对称加密算法。

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

缺点:运算速度非常慢

一般情况下:如果要保证信息传输的安全性,一般都是对称加密和非对称加密互相结合的。例如:我们可以利用非对称加密传输对称加密所需的秘钥,那么后期的交换过程就可以安全的使用对称加密进行了,这样既能保证对称加密的秘钥不会在传输的过程被拦截,又能保证在后续传输的过程中加密和解密的效率。https底层使用的就是这个原理。

举例:Bob有两把钥匙,一把公钥和一把私钥。Bob将自己的公钥分给自己的三个朋友,一人一把。

如果Susan想要给Bob写信,Susan将信件的内容用公钥加密发给Bob,Bob收到信件之后,用私钥进行解密,就可以看到信件的内容。(只要私钥不泄漏,Bob的朋友都可以给Bob写信,即使信件被截获,敌人也无法获取知道信件的内容)

这个时候大家可以发现,我们写信的时候用的是公钥加密,私钥解密。但是如果我们反过来用私钥加密,公钥解密会发生什么事情呢?

 这个时候,当Bob用私钥进行信息加密的时候,持有Bob公钥的朋友都可以对信件进行解密,所以可以发现,当用私钥加密,公钥解密的作用其实就是身份认证。

2.2 数字签名

2.2.1 摘要算法

摘要算法,也是常说的散列函数、哈希函数,它能够将任意长度的数据“压缩”成固定长度。而且独一无二的“摘要”字符串,这好像是给这段数据生成了“指纹”。

作用:保证信心的完整性

特性:

  • 不可逆:只有算法,没有秘钥,只能加密,不能解密
  • 难题友好性:想要破解,只能暴力枚举
  • 发散性:只要对原文进行一点点改变,摘要就会发生剧烈变化
  • 抗碰撞性:原文不同,计算后的摘要也不同。

常见的摘要算法:MD5、SHA1、SHA2

Bob写完信之后,先用摘要算法生成信件原文的摘要(message Digest)bob将摘要附在信件原文的下面,一起发送给pat。

pat接受信之后,使用和Bob一样的摘要算法,加密信件的原文,得到信件的摘要,然后Pat将加密后的摘要和Bob在原文中附加的摘要做一下对比,如果一致说明信件是没有被篡改过的。(但是这种做法存在安全隐患,如果黑客截取了信件并且直接修改了原文,根据原文生成了新的摘要,那么接受者这时候是辨别不出来的)

所以说摘要算法不具有机密性

Bob写完信件之后,先用摘要算法生成信件的摘要,bob使用自己的私钥将摘要加密加密后的结果(加密后的结果称为数字签名)bob将数字签名附在信件下面,一起发给pat。

pat收到信件之后 ,用公钥解密得到信件的摘要,然后pat使用和bob一样的加密算法加密信件的原文,得到信件的摘要,然后比对二者是否一致,如果一致,那么信件就是Bob发的且没有经过篡改。

2.3 数字证书

 假使Doug给Pat一把公钥(这把公钥是Doug,但是骗Pat说是Bob的),然后Doug用私钥对信件进行加密发给Pat,Pat用Doug给的假公钥进行解密后认为这是Bob的发的信件。(这个时候就会造成数据的泄漏)(就相当于有人冒充微信服务器和你通信,然后你把重要信息全部泄漏给了骗子)

那么如何判断公钥是真实的呢?

就是靠CA数字证书了

 Bob向Pat发送信件的时候,Pat收到信件之后先将数字证书取出,对数字证书中的签名进行取出(Pat用数字证书中指定的hash算法根据证书信息计算整个证书信息的摘要,并且使用CA的公钥从数字证书的签名中解析出数字证书的摘要),然后将两个摘要进行比较,如果摘要相同则说明验签通过,Pat从数字证书中获取Bob的公钥。然后根据获取到Bob的公钥进行验签收到的信件。

 像我们平常常见的https协议就用了这个数字证书。

如:现在有一个网站向CA申请数字证书,那CA用自己的私钥对数字证书的基本信息进行了加密并签名(数字证书的基本信息中是存有网站公钥的)此时有一个客户端对https网站发送了一个加密请求,网站对网页就行加密之后,会连同它的数字证书一起发送给这个客户端的浏览器,那客户端浏览器接收到服务器发送过来的数字证书之后,会使用CA的公钥解密数字证书并验签(CA的公钥就是证书认证机构的公钥,默认情况下,我们操作系统中都会有权威的CA证书列表,CA证书列表就会有CA的公钥)那么客户端也会判断当前访问的网址和数字证书中的网址是否一致。

通俗的讲:我们访问一个网站,如果这个网站是https形式的,那么他就会向CA证书列表中注册并申请证书 ,然后浏览器访问的时候,该网站会将自己的数字证书发给浏览器,浏览器会对其进行验签

以上只是部分内容,为了维护方便,本文已迁移到新地址:微信支付Native(一)准备和相关知识 – 编程屋

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值