← 返回上级

Protected

需要密码

实验一实现 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 分解关系

N=pq=(Ax)(A+x)=A2x2N = pq = (A - x)(A + x) = A^2 - x^2

File Tree

相关文件

PDF Preview

实验报告预览

实验一:Many Time Pad

Resources

相关文件