《夏曹俊 C++加密与解密-实战区块链核心密码学-基于OpenSSL》是一套偏实战导向的技术课程,主要面向希望深入理解密码学原理并能够在区块链或安全开发中落地应用的开发者。下面给你做一个系统、详细的介绍:
一、课程定位与目标
这门课程的核心目标是:
- 用 C++语言 + OpenSSL 库 实现常见密码学算法
- 理解区块链底层所依赖的核心加密机制
- 掌握从“理论 → 实现 → 应用”的完整链路
适合人群:
- 有一定 C++ 基础的开发者
- 想进入区块链、安全开发领域的人
- 对密码学原理感兴趣但不想只停留在理论的人
二、课程核心内容模块
1. 密码学基础理论
课程会先建立完整的密码学认知体系,包括:
- 对称加密 vs 非对称加密
- 哈希函数的作用与特性(不可逆、抗碰撞)
- 数字签名与身份认证机制
- 随机数与密钥安全
重点不是纯数学推导,而是为后续代码实现打基础。
2. OpenSSL 库实战应用
重点讲解如何使用 OpenSSL 在 C++ 中实现:
- 加密/解密流程(API调用)
- 密钥生成与管理
- 证书处理(X.509)
- 安全通信基础(SSL/TLS概念)
你会学到:
- EVP 接口(推荐的高级封装)
- BIO 数据流处理
- 错误处理与安全编码规范
3. 对称加密算法实战
主要包括:
- AES(重点)
- DES / 3DES(历史与兼容性)
实战内容:
- 文件加密工具开发
- 字符串加密封装类
- 加密模式对比(ECB、CBC、CTR等)
你会理解:
- 为什么 ECB 不安全
- IV(初始化向量)的作用
4. 非对称加密与密钥体系
重点算法:
- RSA(核心)
- ECC(椭圆曲线加密,区块链重点)
实战:
- 公钥/私钥生成
- 数据加密与解密
- 密钥文件读写(PEM/DER)
进阶理解:
- 大整数运算原理
- RSA 的安全基础(大数分解问题)
5. 哈希算法与数据完整性
核心内容:
- MD5(了解即可)
- SHA-1 / SHA-256(重点)
- SHA-3(扩展)
实战:
- 文件完整性校验工具
- 区块链中的“区块哈希”模拟
你会理解:
- 为什么区块链依赖 SHA-256
- 哈希如何保证数据不可篡改
6. 数字签名与验证机制
这是区块链的关键模块之一:
- RSA 签名
- ECDSA(比特币核心签名算法)
实战:
- 签名生成
- 签名验证流程
- 防伪与身份认证实现
应用场景:
- 区块链交易签名
- API 安全认证
7. 区块链密码学应用实战
课程亮点之一,结合真实场景:
- 区块结构设计(Hash链)
- 简单区块链模型实现
- 钱包地址生成(公钥 → 地址)
- 交易签名验证流程
你会理解:
- 为什么区块链“不可篡改”
- 钱包地址为什么可以公开
- 私钥丢失为什么不可恢复
8. 综合项目实战
通常会包含:
- 加密工具类封装库
- 简易安全通信程序
- 模拟区块链系统
目标是让你具备:
👉 独立开发安全模块的能力
三、课程技术特点
✔ 强实践导向
不是只讲概念,而是大量代码实现 + 项目练习
✔ 贴近区块链应用
重点围绕:
- 数字货币
- 钱包系统
- 区块结构
✔ 深入但不晦涩
相比纯理论密码学课程:
- 减少复杂数学推导
- 强调“怎么用、为什么这么用”
四、你能掌握的能力
学完之后,你大致可以做到:
- 用 C++ 实现常见加密算法
- 使用 OpenSSL 构建安全模块
- 理解区块链底层安全机制
- 开发简单的钱包/签名系统
- 分析常见安全漏洞(如弱加密、错误使用API)
五、课程优缺点分析
优点
- 实战性强(适合做项目/就业)
- 内容体系完整(从基础到区块链)
- 技术栈偏底层(含金量高)
可能的门槛
- 对 C++ 要求较高(指针、内存、类设计)
- OpenSSL API 较复杂(学习曲线略陡)
- 初学者可能对密码学概念不熟悉
六、适合学习路径建议
如果你准备学习这套课,建议顺序:
- 复习 C++ 基础(尤其是文件操作、类设计)
- 学基础密码学概念(哪怕简单了解)
- 跟着课程做代码(不要只看)
- 自己实现一个“小钱包/加密工具”
总结一句话
这门课程本质是:
👉 用 C++ 从0到1掌握“区块链背后的密码学实现能力”
如果你目标是进入 区块链 / 安全开发 / 底层系统方向,它的实用价值是比较高的。

课程目录:
1-2 OpenSSL3.0介绍和在windows下使用vs2019.mp4
1-3 使用vs2019创建第一个openssl3.0的测试项目.mp4
1-4 linux下编译openssl3.0源码并编写测试项目.mp4
2-1 base16编解码原理讲解.mp4
2-2 从0开始C++实现base16编码和解码.mp4
2-3 Base64原理分析.mp4
2-4 OpenSSL_BIO接口解析.mp4
2-5 OpenSSL_BIO接口Base64编码.mp4
2-6 OpenSSL_BIO接口Base64解码并解决换行问题.mp4
2-7 Base58_比特币钱包地址_算法分析.mp4
2-8 比特币base58源码分析并抽取函数进行测试 单项散列_消息.mp4
3-1 单向散列函数章节任务说明.mp4
3-2 什么是单向散列函数.mp4
3-3 单项散列函数的应用场景详解和常用算法_比特币挖矿_消息认证码.mp4
3-4 MD5算法原理详解.mp4
3-5 OpenSSL的MD5接口调用和源码分析.mp4
3-6 使用MD5_HashList验证文件完整性_定时检测文件修改.mp4
3-7 比特币中Merkle可信树基于SHA1算法代码模拟.mp4
3-8 SHA2原理分析和比特币挖矿模拟原理分析.mp4
3-9 基于SHA256模拟比特币挖矿代码演示.mp4
3-10 SHA3和国密SM3散列算法介绍.mp4
3-12 消息认证码HMAC算法介绍和安全分析.mp4
3-13 OpenSSL的HMAC接口演示消息认证.mp4
3-14 单向散列章节总结.mp4
4-1 对称分组加密算法章节介绍和课程目标.mp4
4-2 对称分组加密算法概述和ECB安全问题分析.mp4
4-3 通过XOR自己实现一个对称分组加密算法原理介绍.mp4
4-4 通过XOR自己实现一个对称分组加密算法代码演示.mp4
4-5 DES算法原理介绍.mp4
4-6 OpenSSL的DES加密接口讲解和调用演示.mp4
4-7 演示操纵DES的ECB模式密文.mp4
4-8 使用DES的CBC算法替换ECB演示.mp4
4-9 使用C++封装DES算法实现初始化和密码填充策略.mp4
4-10 封装DES的ECB算法并实现了PKCS7数据填充协议.mp4
4-11 封装DES_CBC加解密算法实现PKCS7填充.mp4
4-17 AES算法原理介绍.mp4
4-18 封装C++加密类支持AES和3DES完成初始化.mp4
4-19 完成XSec封装加解密演示用AES加解密文件.mp4
4-20 国密SM4介绍添加到XSec封装中并修正DES算法的填充处理.mp4
4-21 测试12类对称加密算法性能测试类的初始化和测试函数.mp4
4-22 完成对称加密算法性能测试并将项目移植到Linux.mp4
4-23 对称分组加密算法章节总结.mp4
5-1 RSA非对称加密原理介绍和密钥对生成原理分析.mp4
5-2 OpenSSL的RSA秘钥对生成代码详解.mp4
5-3 RSA_PKCS1_PADDING填充协议分析.mp4
5-4 完成RSA公钥加密数据,并处理填充数据.mp4
5-5 完成RSA私钥解密数据.mp4
5-10 签名和验签原理讲解并演示rsa的签名的代码.mp4
5-12 椭圆曲线原理和加解密流程分析.mp4
5-13 打印支持曲线列表并选择椭圆曲线生成秘钥.mp4
5-15 椭圆曲线ECDSA签名和验签原理分析.mp4
5-17 ecdh椭圆曲线秘钥交换协议分析.mp4
5-20 完成椭圆曲线客户端与服务端交换秘钥示例代码.mp4
5-21 非对称加密章节总结.mp4
6-1 安全通信SSL_TLS_OPENSSL章节介绍.mp4
6-2 SSL_TLS协议介绍.mp4
6-3 TLS握手协议和记录协议详解.mp4
6-4 基于OpenSSL证书和秘钥的制作.mp4
6-5 OpenSSL 加密SSL_TLS通信接口分析.mp4
6-6 OpenSSL接口编程实例完成跨平台通信项目.mp4
6-7 完成OpenSSL服务端SSL握手调用.mp4
6-8 打印通信使用的协议和x509证书信息.mp4
6-9 完成基于OpenSSL的安全加密通信并用抓包验证.mp4
6-10 HTTPS协议交互分析和HTTP协议介绍.mp4
6-11 HTTPS网站服务器代码演示.mp4
6-12 课程总结.mp4
代码资料.zip
