Cryptography / Algorithm Implementation
密码学算法实现实验合集
围绕密码学课程实验整理的算法实现合集,覆盖 Many Time Pad 攻击、DES/3DES、AES-CBC/CTR、SM4-OFB/CFB 以及 RSA 密钥生成与 Fermat 分解攻击,材料包括实验报告、源码、测试数据和运行结果截图
实验一实现 Many Time Pad 攻击:基于同一 OTP 密钥复用下的密文异或关系,结合 ASCII 合法性和英文频率评分恢复目标明文。
实验二手工实现 DES 与 3DES:从 IP/FP 置换、E 扩展、S 盒、P 置换、16 轮 Feistel 到 3DES-EDE 封装,并比较 DES 与 3DES 的运行时间差异。
实验三手工实现 AES-128,并分别完成 CBC 与 CTR 模式下的加解密系统,覆盖 S 盒、行移位、列混淆、密钥扩展、PKCS#7 填充和计数器密钥流。
实验四实现国密 SM4:完成 S 盒、tau 非线性变换、L/L′ 线性变换、32 轮密钥扩展和轮函数,并封装 OFB/CFB 两种模式。
实验五实现 RSA 密钥生成、文本加解密和攻击实验:手工实现大素数生成、Miller-Rabin、快速模幂、扩展欧几里得求逆,并对近素数模数进行 Fermat 分解。
Timeline
整理过程
2025.10实验一:完成 Many Time Pad 攻击程序,恢复 1376 bit 密钥片段并解出目标明文。
2025.11.12实验二:完成 DES/3DES 加解密程序和 ECB 模式性能对比报告。
2025.11.27实验三:完成 AES-128 基础轮变换、CBC 模式和 CTR 模式实现。
2025.12.10实验四:完成 SM4 核心算法、OFB 模式和 CFB 模式实现与测试。
2025.12.24实验五:完成 RSA 生成、加解密、Fermat 分解挑战和解密挑战整理。
Methods
算法与实现要点
Python五个实验主要使用 Python 3.11 实现,DES、AES、SM4 均尽量只依赖标准库,RSA 实验使用 gmpy2 辅助大整数运算。
Many Time Pad同一 OTP 密钥复用时,C_i xor C_j 会抵消密钥并转化为 P_i xor P_j 的统计分析问题。
DES/3DESDES 实现覆盖初始置换、末置换、16 轮 Feistel、E 扩展、S 盒、P 置换和子密钥生成;3DES 采用标准 EDE 链路。
AES-CBC/CTRAES 实现覆盖 KeyExpansion、SubBytes、ShiftRows、MixColumns、AddRoundKey;CBC 使用 PKCS#7 填充,CTR 使用 nonce/counter 生成密钥流。
SM4-OFB/CFBSM4 实现覆盖 tau、L、L′、T、T′、32 轮密钥扩展和反序轮密钥解密,并在 OFB/CFB 下处理任意长度明文。
RSARSA 实现覆盖随机大素数生成、Miller-Rabin 素性检测、快速模幂、模逆元、密钥生成、文本加密和私钥解密。
Fermat 分解当 RSA 的 p、q 距离过近时,可写 N = A^2 - x^2,通过从 sqrt(N) 附近搜索 A 恢复 p 和 q。
Mermaid
实验结构
flowchart LR A[实验一 Many Time Pad] --> B[OTP 密钥复用分析] B --> C[ASCII 与频率评分] D[实验二 DES/3DES] --> E[Feistel 与 EDE] F[实验三 AES] --> G[CBC / CTR] H[实验四 SM4] --> I[OFB / CFB] J[实验五 RSA] --> K[密钥生成与 Fermat 分解] C --> L[密码学算法实现合集] E --> L G --> L I --> L K --> L
LaTeX
Fermat 分解关系
File Tree
相关文件
Gallery
运行结果
Resources
相关文件
PDF实验一:Many Time Pad
打开 →围绕 OTP 密钥复用问题,通过候选 key byte 枚举、ASCII 过滤和英文频率评分恢复目标明文。
PDF实验二:DES / 3DES
打开 →手工实现 DES 核心组件、完整 DES 加解密、3DES-EDE 和 ECB 模式性能对比。
PDF实验三:AES-CBC / CTR
打开 →实现 AES-128 核心轮变换,并在 CBC 与 CTR 模式下恢复测试明文并做重加密校验。
PDF实验四:SM4-OFB / CFB
打开 →实现国密 SM4 核心算法、OFB 模式和 CFB 模式,并用标准向量与字符串测试验证。
PDF实验五:RSA 与 Fermat 分解
打开 →实现 RSA 密钥生成和文本加解密,并完成近素数模数下的 Fermat 分解攻击。
ZIP密码学实验源码包
下载 →打包 Many Time Pad、DES/3DES、AES-CBC/CTR、SM4-OFB/CFB、RSA/Fermat 分解相关源码和数据。