文章目录
- 词语
- 得到 密文
- 得到 数据摘要(或者叫做"数据指纹")
- 得到 数字签名
- 加密通信方案的逐渐完善的过程
- HTTPS 客户端和服务端的通信过程
- 在写项目之前需要准备的一些工具
- 一个web计算器的demo项目
- C++代码实现一个HTTPS客户端程序
- C++代码实现一个HTTPS服务端程序
词语
有一个应用层协议叫 HTTP,也有一个应用层协议叫 HTTPS
HTTPS,本质上就是 HTTP 协议 跑在 TLS 安全层 上,而 TLS 又跑在 TCP 之上。
SSL 是早期的加密协议,而 TLS 是 SSL 的升级版
SSL 的全称是 Secure Sockets Layer(安全套接层);TLS 的全称是 Transport Layer Security(传输层安全)。
得到 密文
明文 -加密操作使用加密密钥-> 密文
密文 -解密操作使用解密密钥-> 明文
目的是为了保护数据的机密性
使用同一个密钥同时作为加密密钥和解密密钥的这种加密方式叫做“对称加密”,常见的对称加密算法有…
使用两个密钥,公钥作为加密密钥,私钥作为解密密钥的这种加密方法叫做“非对称加密”,常见的非对称加密算法有…
更多内容参看讲授密码学的书籍
得到 数据摘要(或者叫做"数据指纹")
原始数据 -单向Hash函数(不可逆)-> 数据摘要
数据摘要的用途:…
得到 数字签名
一种计算出数字签名的方法:
数据摘要 -私钥-> 数字签名
数字签名 -公钥-> 数字摘要
验证签名的过程,本质上就是“提取摘要”并“比对摘要”的过程
目的是为了证明数据的真实性和完整性
数字签名只能使用非对称算法吗?当然可以使用对称算法实现。
加密通信方案的逐渐完善的过程
HTTPS 客户端和服务端的通信过程
客户端先明文发送…,
你直觉上认为哪里可以破解,仔细推算一下试试,真地能实现吗?
在写项目之前需要准备的一些工具
OpenSSL 是一个强大、开源且跨平台的安全通信工具包。OpenSSL 的三大核心组件:
- libcrypto(密码算法库):提供基础的加密能力,包含对称加密(如 AES)、非对称加密(如 RSA)、哈希函数(如 SHA-256)以及随机数生成器等。
- libssl(SSL/TLS 协议库):实现了 TLS、DTLS 等安全通信协议,负责在网络传输中建立安全通道,处理握手、加密通信等流程。
- openssl(命令行工具):一个功能强大的“瑞士军刀”,让用户可以直接在终端通过命令执行密钥生成、证书管理、加密解密、协议测试等操作。
一个web计算器的demo项目
基于