首页 > 其他分享 >从零玩转系列之微信支付安全

从零玩转系列之微信支付安全

时间:2023-06-10 13:25:15浏览次数:43  
标签:公钥 加密 证书 微信 商户 之微信 密钥 系列 玩转

一、前言

halo各位大佬很久没更新了最近在搞微信支付,因商户号审核了我半个月和小程序认证也找了资料并且将商户号和小程序进行关联,至此微信支付Native支付完成.此篇文章过长我将分几个阶段的文章发布(项目源码都有,小程序和PC端)

在此之前已经更新了 微信支付开篇

二、微信支付安全(证书/秘钥/签名)

1. 信息安全的基础 - 机密性

明文:加密前的消息叫“明文”(plain text)

密文:加密后的文本叫“密文”(cipher text)

密钥:只有掌握特殊“钥匙”的人,才能对加密的文本进行解密,这里的“钥匙”就叫做“密钥”(key)

“密钥”就是一个字符串,度量单位是“位”(bit),比如,密钥长度是 128,就是 16 字节的二进制串

加密:实现机密性最常用的手段是“加密”(encrypt)

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

解密:使用密钥还原明文的过程叫“解密”(decrypt)

加密算法:加密解密的操作过程就是“加密算法”

所有的加密算法都是公开的,而算法使用的“密钥”则必须保密

2. 对称加密和非对称加密

对称加密
  • 特点:只使用一个密钥,密钥必须保密,常用的有 AES算法优点:运算速度快
  • 缺点:秘钥需要信息交换的双方共享,一旦被窃取,消息会被破解,无法做到安全的密钥交 换
  • 优点:运算速度快
  • 缺点:秘钥需要信息交换的双方共享,一旦被窃取,消息会被破解,无法做到安全的密钥交 换
非对称加密
  • 特点:使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,常用的有 RSA、SM2
  • 优点:黑客获取公钥无法破解密文,解决了密钥交换的问题
  • 缺点:运算速度非常慢
混合加密
  • 实际场景中把对称加密和非对称加密结合起来使用

3.身份认证

  • 公钥加密, 私钥解密的作用是加密信息

  • 私钥加密,公钥解密的作用是身份认证

4.摘要算法(Digest Algorithm)

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

作用

保证信息的完整性

特性

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

常见摘要算法

MD5、SHA1、SHA2(SHA224、SHA256、SHA384)

5.数字签名

数字签名是使用私钥对摘要加密生成签名,需要由公钥将签名解密后进行验证,实现身份认证和不可否 认

签名和验证签名的流程

签名和验证签名的流程图

6.数字证书

数字证书解决“公钥的信任”问题,可以防止黑客伪造公钥。

不能直接分发公钥,公钥的分发必须使用数字证书,数字证书由CA颁发 HTTPS 协议中的数字证书

HTTPS协议中的数字证书

7.微信APIv3证书

商户证书:

商户API证书是指由商户申请的,包含商户的商户号、公司名称、公钥信息的证书。

商户证书在商户后台申请:点我前往申请获取商户证书

商户api

8. ⚠️ 平台证书(微信支付平台)

微信支付平台证书是指由微信支付 负责申请的,包含微信支付平台标识、公钥信息的证书。商户可以使用平台证书中的公钥进行验签。

平台证书的获取:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay3_0.shtml

后续Native模式通过WechatPayHttpClientBuilder构造的HttpClient,会自动的处理签名和验签,并进行证书自动更新我们就先不需要下载这个微信平台证书,后续JSAPI需要下载(使用了国内顶级开源项目来操作它没有默认处理所以你懂的....)

证书下载参考: https://github.com/wechatpay-apiv3/CertificateDownloader

9. ⚠️ API密钥和APIv3密钥

都是对称加密需要使用的加密和解密密钥,一定要保管好,不能泄露。

API密钥对应V2版本的API
APIv3密钥对应V3版本的API

标签:公钥,加密,证书,微信,商户,之微信,密钥,系列,玩转
From: https://www.cnblogs.com/Yangbuyi/p/17471143.html

相关文章

  • 从零玩转系列之微信支付实战基础框架搭建
    一、前言halo各位大佬很久没更新了最近在搞微信支付,因商户号审核了我半个月和小程序认证也找了资料并且将商户号和小程序进行关联,至此微信支付Native支付完成.此篇文章过长我将分几个阶段的文章发布(项目源码都有,小程序和PC端)在此之前已经更新了微信支付开篇、微信支付安全......
  • 从零玩转系列之微信支付开篇
    一、前言halo各位大佬很久没更新了最近在搞微信支付,因商户号审核了我半个月和小程序认证也找了资料并且将商户号和小程序进行关联,至此微信支付Native支付完成.此篇文章过长我将分几个阶段的文章发布(项目源码都有,小程序和PC端)二、演示微信支付Native案例微信支付JSAPI案......
  • 【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-数据包分析
    前言Wireshark(前称Ethereal)是一个网络数据包分析软件。网络数据包分析软件的功能是截取网络数据包,并尽可能显示出最为详细的网络数据包数据。在过去,网络数据包分析软件是非常昂贵,或是专门属于营利用的软件,Wireshark的出现改变了这一切。在GNU通用公共许可证的保障范围底下,用户可以......
  • 带你体验AI系列之云原生最佳实践--免费体验GPT-4教程
    前言​【GPT-4】是OpenAI最新推出的大型语言模型,它支持图像和文本输入,以文本形式输出。它比GPT-3.5更大、更强、更猛。最重要的是据与研究表明,他在某些场景下,可以通过图灵测试。但是,却缺点是收费,不像GPT-3.5那样容易白嫖。不过今天我就带你嫖一手,真香警告!本教程可称为云原生......
  • MDT部署Windows系列 (十二): 进阶篇—制作完美的Win10 22H2系统镜像模板之移除Windows
    前言由于工作等原因(借口),距离发布上一篇MDT系列的文章已经过去一年::twemoji:sweat::上一章我记录了基于MDT如何使用一个Task即可实现制作Windows基础wim镜像+DIY基础软件+捕捉镜像。传送门有好多同学一直咨询在制作捕捉镜像的时候遇到的常见的2个问题:如何彻底的移除掉Windows10中......
  • mac更新系统后git出现的一系列问题
    1.xcrun:error:invalidactivedeveloperpath(/Library/Developer/CommandLineTools),missingxcrunat:/Library/Developer/CommandLineTools/usr/bin/xcrun  1.解决方法:打开命令终端运行xcode-select--install回车后,系统弹出下载xcode组件,点击确认,下载完成后即......
  • 高级别智能驾驶业务系列:自动驾驶系统
        近年来,伴随着智慧化港口的大潮流,经纬恒润L4高级别智能驾驶业务产品也陆续扎根港口自动驾驶多个项目中,帮助港口实现无人水平运输自动化,达到降本增效的效果,助力客户实现智慧化绿色港口。      在整个港口水平运输场景中,经纬恒润提供了端到端的车、路、网、......
  • 深入浅出Spring原理及实战「缓存Cache开发系列」
    1.  缓存Cache的概念和作用在现代软件开发中,缓存已经成为了一个非常重要的概念。缓存是指将数据存储在一个临时的存储器中,以便于快速访问和读取。缓存的作用是提高系统的性能和响应速度,减少网络流量和数据库的负载。以电影院购票为例,当用户选择一部电影时,系统需要查询电影的......
  • JAVA面试题解惑系列(六)——字符串(String)杂谈
    关键字:java面试题字符串string作者:臧圩人(zangweiren)网址:http://zangweiren.javaeye.com上一次我们已经一起回顾了面试题中常考的到底创建了几个String对象的相关知识,这一次我们以几个常见面试题为引子,来回顾一下String对象相关的其它一些方面。String的l......
  • 驱动开发:内核文件读写系列函数
    在应用层下的文件操作只需要调用微软应用层下的API函数及C库标准函数即可,而如果在内核中读写文件则应用层的API显然是无法被使用的,内核层需要使用内核专有API,某些应用层下的API只需要增加Zw开头即可在内核中使用,例如本章要讲解的文件与目录操作相关函数,多数ARK反内核工具都具有对......