0101支付安全-支付模块-项目实战

文章目录

在支付过程中,设计多方的敏感信息,那么安全尤为重要。下面先简单介绍下,相关概念。

一、信息安全的基础-机密性

1 相关概念

  • 明文:加密前的消息叫"明文"(plaintext)
  • 密文:加密后的文本叫"密文"(ciphertext)
  • 密钥:只有掌握特殊"钥匙"的人,才能对加密的文本进行解密,这里的"钥匙"就叫做"密钥"(key)
    • 秘钥就是一个字符串,度量单位是位(bit),比如,秘钥长度128,就是16字节的二进制串。
  • 加密:实现机密性最常用的手段是"加密"(encrypt)。
    • 按照秘钥的方式,机密可分为两大类:对称加密和非对称加密。
  • 加密算法:加密解密的操作过程就是"加密算法"
    • 所有的加密算法都是公开的,而算法使用的"密钥"则必须保密

2 对称加密和非对称加密

对称加密

  • AES加密算法:密钥长度128、192或256,安全强度很高,性能很好。
  • 加密分组模式:将明文分组加密,微信支付使用AEAD_AES_256_GCM.

非对称加密

  • 使用公钥加密只能用私钥解密,反过来私钥加密需要公钥解密,用于身份认证。
  • RSA加密算法:常用非对称加密算法

对称加密和非对称加密比较:

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

二、身份认证

公钥加密,私钥解密的作用是加密信息私钥加密,公钥解密的作用是身份认证。

三 摘要算法

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

**作用:**保证信息的完整性
特性:

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

常见摘要算法:

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

四、数字签名

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

签名和验证签名的流程:

五、数字证书

数字证书解决"公钥的信任"问题,可以防止黑客伪造公钥。不能直接分发公钥,公钥的分发必须使用数字证书,数字证书由CA颁发。

https协议中的数字证书:

**声明:**内容取自下面链接1,想看原版的可以去链接1获取。

结语

欢迎小伙伴一起学习交流,需要啥工具或者有啥问题随时联系我。

❓QQ:806797785

⭐️源代码地址:https://gitee.com/gaogzhen/smart-utilities.git

1\][支付视频教程](https://www.bilibili.com/video/BV1US4y1D77m)\[CP/OL

相关推荐
NPE~1 天前
[手写系列]从零到一:Github开源你的第一个项目
ai·开源·github·教程·项目实战·规范·yiqguard
晓杰'3 天前
从0到1实现Balatro游戏后端(5):得分计算与单局结算流程实现
后端·typescript·node.js·游戏开发·项目实战·nestjs·webscoket
晓杰'6 天前
从0到1实现Balatro游戏后端(4):玩家手牌操作(出牌 / 弃牌 / 补牌)与状态流转设计
后端·websocket·typescript·node.js·状态模式·项目实战·nestjs
海市公约14 天前
从 CRUD 到 AI 工程:基于 FastAPI + Dify 的 AI 面试模拟系统实践
prompt·fastapi·项目实战·dify·ai工作流·后端架构
谙弆悕博士17 天前
【附C++源码】从零开始实现 2048 游戏
java·c++·游戏·源码·项目实战·2048
谙弆悕博士17 天前
【附C源码】二叉搜索树的C语言实现
c语言·开发语言·数据结构·算法·二叉树·项目实战·数据结构与算法
晓杰'19 天前
从0到1实现 Balatro 游戏后端(2):NestJS框架搭建与项目结构设计
后端·websocket·typescript·node.js·游戏开发·项目实战·nestjs
晓杰'21 天前
从0到1实现 Balatro 游戏后端(1):项目规划与牌型判断实现
后端·websocket·typescript·node.js·游戏开发·项目实战·nestjs
胖哥真不错23 天前
R实现负二项回归模型项目实战
回归·r语言·毕业设计·项目实战·负二项回归模型
人间打气筒(Ada)3 个月前
gitlab私有仓库搭建
运维·gitlab·项目实战·devops·代码部署实战·版本控制仓库