20243408 2025-2026-2 《Python程序设计》综合实践报告
课程:《Python程序设计》
班级:2434
姓名:梁灏
学号:20243408
实验教师:王志强
实验日期:2026年5月25日
必修/选修:公选课
1. 实验内容
1.1 项目名称
基于GAN的密码学S-Box生成与评估系统
1.2 项目源代码
已全部上传至Gitee。链接:https://gitee.com/lucaslianghao/sbox
1.3 项目简介
本综合实践基于本人参与的大学生创新创业项目,已于2026年完成结项,定级市级项目。本项目旨在综合运用Python程序设计所学的知识,完成一个完整的、具有实际应用价值的项目。具体要求如下:
-
基于生成对抗网络(GAN)技术,设计并实现一个密码学S-Box自动生成系统。
-
集成多种主流GAN架构(Original GAN、DCGAN、WGAN-GP、WGP-IM、CGAN),支持一键训练和模型切换。
-
实现S-Box密码学性能的全面评估,包括非线性度、差分均匀度、代数次数、SAC、BIC等核心指标。
-
利用Matplotlib/Seaborn实现多维度的可视化分析,包括雷达图、热力图、多模型对比图等。
-
支持CSV、JSON、Excel等多种格式的数据导出,便于后续分析。
-
提供AES标准S-Box基准对比,量化生成S-Box的密码学质量。
2. 实验分析
2.1 背景与意义
S-Box(Substitution Box,替换盒)是分组密码算法中的核心非线性组件,直接影响密码算法的安全性。AES(高级加密标准)的S-Box以其优秀的密码学性能闻名:非线性度达到112(上界120)、差分均匀度仅为4(最小2)、代数次数为7(最大值),是目前最经典和最安全的S-Box设计之一。
然而,传统S-Box设计方法(如有限域求逆+仿射变换、混沌系统、遗传算法等)存在设计周期长、优化困难、缺乏多样性等问题。近年来,生成对抗网络(GAN)在图像生成、文本生成等领域取得巨大成功,其强大的数据分布学习能力使其成为S-Box生成的潜在方法。
本实验的核心思路是:利用GAN学习高质量S-Box(如AES、SM4)的数据分布,从而自动生成具有优良密码学性能的新型S-Box。这涉及到密码学、深度学习、数据可视化等多个领域的交叉融合,是Python综合编程能力的全面检验。
2.2 技术分析
关键技术点包括:
-
密码学:S-Box构造理论、仿射等价变换、密码学指标计算(Walsh-Hadamard变换、差分分布表、代数正规形式)
-
深度学习:五种GAN架构的生成器与判别器网络设计、对抗训练策略
-
数据处理:基于NumPy/Pandas的大规模S-Box批量生成、评估和统计分析
-
数据可视化:基于Matplotlib/Seaborn的多维密码学指标可视化
2.3 系统架构设计
基于面向对象设计原则,系统采用模块化分层架构:
- core层:提供密码学计算核心、GAN模型定义、损失函数等基础组件
- modules层:封装训练器、评估器、导出器和可视化器等高层功能模块
- main层:主控程序,整合所有功能并提供交互式菜单界面
这种架构保证了代码的高内聚、低耦合特性,便于单独测试和维护各功能模块。
3. 实验设计与实现
3.1 项目结构
Sbox/
├── main.py # 主程序入口(功能1:训练;功能2:全流程自动化)
├── requirements.txt # 项目依赖配置
├── core/ # 核心功能层
│ ├── crypto/ # 密码学模块
│ │ ├── crypto.py # S-Box生成与数据集优化
│ │ ├── aes_sbox.py # AES S-Box基准
│ │ ├── sbox_analyzer.py # 密码学指标分析器
│ │ └── enhanced_sbox_generator.py # 增强生成器
│ ├── models/ # GAN模型定义
│ │ ├── gan_original.py # 原始GAN
│ │ ├── gan_dcgan.py # DCGAN
│ │ ├── gan_wgp_im.py # WGAN-GP改进版
│ │ ├── gan_cgan.py # 条件GAN
│ │ ├── generator.py # WGAN-GP生成器
│ │ └── discriminator.py # WGAN-GP判别器
│ └── utils/ # 工具模块
│ ├── losses.py # GAN损失函数
│ └── crypto_losses.py # 密码学专用损失
├── modules/ # 功能模块层
│ ├── trainer.py # GAN训练模块
│ ├── evaluator.py # S-Box评估模块
│ ├── visualizer.py # 可视化模块
│ ├── exporter.py # 数据导出模块
│ └── report_helper.py # 报告生成辅助
├── results/ # 输出结果目录
│ ├── original_gan/ # 各GAN模型训练结果
│ ├── dcgan/
│ ├── wgan_gp/
│ ├── cgan/
│ ├── wgp_im/
│ ├── charts/ # 可视化图表
│ ├── export/ # 导出数据文件
│ └── pipeline_*/ # 流程运行结果
└──
3.2 密码学核心实现
3.2.1 AES S-Box构造
AES S-Box基于有限域GF(2^8)上的乘法逆元与仿射变换构造。核心代码位于 aes_sbox.py
python
# AES S-Box生成:GF(2^8)求逆 + 仿射变换
def generate_aes_sbox():
sbox = np.zeros(256, dtype=np.uint8)
for i in range(256):
inv = _gf_inverse(i, AES_MOD_POLY) # 步骤1: GF(2^8)求逆
sbox[i] = affine_transform(inv, AES_AFFINE_A, AES_AFFINE_B) # 步骤2: 仿射变换
return sbox
其中,仿射变换的核心是有限域上的矩阵运算:
python
def affine_transform(x, A, b):
x_vec = np.array([(x >> i) & 1 for i in range(8)], dtype=np.uint8)
Ax = (A @ x_vec) % 2 # 矩阵乘法 mod 2
y_vec = (Ax + b) % 2 # 加偏移 mod 2
y = 0
for i in range(8):
y |= y_vec[i] << i # 位拼接恢复整数值
return y
3.2.2 密码学指标分析器
系统通过sbox_analyzer.py实现完整的密码学指标计算,使用Numba JIT编译加速核心计算:
python
class SBoxAnalyzer:
"""S-Box密码学分析器,支持5大核心指标计算"""
@staticmethod
@jit(nopython=True)
def _compute_ddt_core(sbox_np, size):
"""差分分布表(DDT)计算 - JIT加速"""
ddt = np.zeros((size, size), dtype=np.uint16)
for x in range(size):
for dx in range(size):
dy = sbox_np[x] ^ sbox_np[x ^ dx]
ddt[dx, dy] += 1
return ddt
def nonlinearity(self):
"""基于Walsh-Hadamard变换计算非线性度"""
lat = self.compute_lat()
max_abs_bias = np.max(np.abs(lat[1:]))
return (self.size // 2) - max_abs_bias
def algebraic_degree(self):
"""基于代数正规形式(ANF)计算代数次数"""
all_anf_coeffs = self._get_all_anf_coeffs()
max_degree = 0
for anf in all_anf_coeffs:
for i in range(1, self.size):
if anf[i] != 0:
term_degree = bin(i).count('1') # 计算项中变量的数量
degree = max(degree, term_degree)
max_degree = max(max_degree, degree)
return max_degree
指标说明:
- 非线性度:通过线性逼近表(LAT)的最大绝对值偏差计算。AES S-Box的非线性度为112(上界120)。
- 差分均匀度:通过差分分布表(DDT)的非零输入差分最大条目计算。AES S-Box的差分均匀度为4(最小值2)。
- 代数次数:通过代数正规形式中最高次项计算。AES S-Box的代数次数为7(最大值)。
3.2.3 训练数据集优化策略
为确保GAN生成高质量的S-Box,系统在crypto.py中实现了三阶段数据集生成策略:
python
def generate_dataset(base_sboxes, num_samples):
"""
三阶段优化数据集生成
Phase 1: 添加原始基准S-Box(AES、SM4)- 保证质量锚点
Phase 2: 生成仿射等价S-Box并质量过滤 - 保持密码学强度
Phase 3: 应用增强变换(逆组合、位置换、受控交换、循环移位)
"""
# Phase 1: 高质量基准
for idx, sbox in enumerate(base_sboxes):
if len(sbox) == 256:
dataset.append(np.array(sbox, dtype=np.uint8))
# Phase 2: 仿射等价变换(保持密码学性质)
for attempt in range(max_affine_attempts):
new_sbox = generate_affine_equivalent_sbox(base_sbox)
if len(np.unique(new_sbox)) != 256: # 双射性验证
continue
# ... 质量检查与去重
# Phase 3: 增强变换(可控扰动)
# _apply_inverse_composition: GF(2^8)逆元素组合
# _apply_bit_permutation: 比特级置换
# _apply_controlled_swaps: 受控对交换
# _apply_cyclic_shift_variant: 循环移位变体
仿射等价变换是S-Box生成的关键技术。两个S-Box是仿射等价的,当且仅当存在可逆仿射变换将其中一个映射为另一个。仿射等价保持核心密码学性质(非线性度、差分均匀度),因此是生成高质量S-Box变体的标准方法。
3.3 GAN模型架构设计
系统支持5种主流GAN架构,每种都有特定的生成器(Generator)和判别器(Discriminator)网络结构。
3.3.1 WGAN-GP(主力架构)
WGAN-GP是系统的核心架构,其生成器使用转置卷积+自注意力机制,判别器使用卷积网络+LeakyReLU。代码核心结构如下:
generator.py- 生成器网络:
python
class Generator(nn.Module):
"""
S-Box生成器:噪声 → 全连接层 → 转置卷积 → 自注意力 → 输出256维S-Box
"""
def __init__(self, noise_dim=256, output_dim=256, base_channels=64):
super(Generator, self).__init__()
self.fc = nn.Linear(noise_dim, self.initial_channels * 4 * 4) # 噪声投影
self.conv1 = nn.ConvTranspose2d(..., kernel_size=4, stride=2) # 上采样1
self.attn = SelfAttention(in_dim=base_channels * 4) # 自注意力
self.conv2 = nn.ConvTranspose2d(..., kernel_size=4, stride=2) # 上采样2
self.tanh = nn.Tanh() # 输出归一化
def forward(self, z):
# 噪声 → FC → 重塑为4×4特征图 → 上采样到8×8 → 自注意力 → 上采样到16×16
# 最终reshape为256维S-Box向量
SelfAttention机制能捕获特征图中远距离像素之间的依赖关系,对于S-Box这种需要全局一致性的数据尤为重要。
discriminator.py- 判别器网络:
python
class Discriminator(nn.Module):
"""
S-Box判别器:256维输入 → 重塑16×16 → 卷积下采样 → 标量评分
"""
def __init__(self, input_dim=256, base_channels=64):
super(Discriminator, self).__init__()
self.reshape = nn.Unflatten(1, (1, 16, 16)) # 重塑为2D
self.conv_blocks = nn.Sequential(
nn.Conv2d(1, 64, 4, 2, 1), # 16×16→8×8
nn.LeakyReLU(0.2),
nn.Conv2d(64, 128, 4, 2, 1), # 8×8→4×4
nn.LeakyReLU(0.2),
nn.Conv2d(128, 256, 4, 1, 0), # 4×4→1×1
nn.LeakyReLU(0.2)
)
self.fc = nn.Linear(256, 1) # 输出Wasserstein距离评分
3.3.2 其他架构
| 架构 | 特点 | 应用场景 |
|---|---|---|
| Original GAN | 经典架构,使用BCE损失 | 基线对比 |
| DCGAN | 批归一化+转置卷积,训练更稳定 | 特征学习 |
| WGAN-GP | Wasserstein距离+梯度惩罚,训练稳定 | 主力模型 |
| WGP-IM | WGAN改进版,增强多样性 | 多样性生成 |
| CGAN | 条件输入,可指定S-Box类型 | 定向生成 |
3.3.3 统一训练框架
trainer.py中实现了一个统一的训练调度器,可根据model_type参数自动选择对应的网络结构:
python
class GANTrainer:
"""统一GAN训练调度器,支持5种架构"""
SUPPORTED_MODELS = ['original_gan', 'dcgan', 'wgan_gp', 'wgp_im', 'cgan']
def _build_models(self):
"""根据model_type自动构建对应的生成器和判别器"""
if self.model_type == 'original_gan':
self.generator = OriginalGANGenerator(...)
elif self.model_type == 'dcgan':
self.generator = DCGANGenerator(...)
elif self.model_type in ['wgan_gp', 'wgp_im']:
self.generator = Generator(...) # WGAN-GP架构
elif self.model_type == 'cgan':
self.generator = CGANGenerator(...)
def train_model(self, epochs=100, batch_size=64, ...):
"""统一训练流程:数据准备 → 对抗训练 → 结果保存"""
dataloader = self._prepare_dataset(batch_size=batch_size)
# 对抗训练循环(判别器与生成器交替更新)
for epoch in range(1, epochs + 1):
for real_sboxes, labels in dataloader:
# 步骤1: 训练判别器
# 步骤2: 训练生成器
# 步骤3: 可选梯度惩罚(WGAN-GP)
3.4 评估与导出模块
3.4.1 S-Box批量评估器
evaluator.py实现了单次和批量S-Box评估,并与AES基准自动对比:
python
class SBoxEvaluator:
CORE_METRICS = ['nonlinearity', 'differential_uniformity',
'algebraic_degree', 'sac_average', 'bic_average']
def evaluate_sbox(self, sbox, sbox_name=None):
"""评估单个S-Box的所有密码学指标"""
analyzer = SBoxAnalyzer(sbox)
metrics = analyzer.evaluate()
# 与AES基准对比,计算差值
aes_metrics = self.aes_baseline.get_metrics()
result['nl_diff'] = metrics['nonlinearity'] - aes_metrics['nonlinearity']
# ...
return result
def evaluate_sboxes(self, sbox_list, names=None, show_progress=True):
"""批量评估多个S-Box,返回DataFrame"""
for sbox, name in tqdm(zip(sbox_list, names)):
result = self.evaluate_sbox(sbox, sbox_name=name)
results.append(result)
return pd.DataFrame(results)
3.4.2 多格式导出器
exporter.py支持CSV、JSON、Excel三种格式的数据导出:
python
class SBoxExporter:
def export_to_csv(self, sbox_list, metrics_df=None):
"""导出S-Box和评估指标为CSV格式"""
def export_to_json(self, sbox_list, metrics_df=None):
"""导出为JSON结构化数据"""
def export_to_excel(self, sbox_list, metrics_df=None):
"""导出为Excel多工作表文件"""
def batch_generate_and_export(self, generator_path, num_boxes=10, ...):
"""批量生成+评估+导出的一体化流程"""
3.4.3 AES基准对比系统
aes_sbox.py中预置了AES S-Box的标准值和所有密码学指标,支持与GAN生成S-Box的自动化对比:
python
class AESSboxBaseline:
# 标准AES S-Box(256字节,十六进制)
AES_SBOX = np.array([
0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, ...], dtype=np.uint8)
# 预计算的密码学指标(避免重复计算)
# nonlinearity: 112, differential_uniformity: 4
# algebraic_degree: 7, sac: ~0.5, bic: ~0.5
@classmethod
def compare_with_gan_sbox(cls, gan_sbox_metrics):
"""对比GAN生成S-Box与AES的差距"""
comparison = {}
for key in ['nonlinearity', 'differential_uniformity', ...]:
diff = gan_sbox_metrics[key] - aes_metrics[key]
comparison[f'{key}_diff'] = diff
return comparison
3.5 可视化模块
系统通过visualizer.py提供了8种可视化图表类型,全面展示S-Box的密码学性能:
3.5.1 训练过程可视化
python
def plot_training_curves(self, loss_dict, ...):
"""绘制GAN训练损失曲线(Generator Loss vs Discriminator Loss)
包含趋势分析和收敛状态判断
"""
ax.plot(epochs, g_losses, label='Generator Loss', color='#2196F3', ...)
ax.plot(epochs, d_losses, label='Discriminator Loss', color='#F44336', ...)
3.5.2 单模型雷达图
python
def plot_metrics_radar(self, metrics_df, ...):
"""绘制雷达图展示单个模型的5维密码学指标
支持同时对比多个S-Box实例
自动将各指标归一化到0-100范围便于直观比较
"""
categories = ['非线性度', '差分均匀度\n(反向)', '代数次数', 'SAC均值', 'BIC均值']
# 对各指标进行归一化处理
# nonlinearity → /112*100, differential_uniformity → 反向归一化
# sac/bic → 越接近0.5越好
图x 单模型雷达图(WGP_IM)
3.5.3 S-Box热力图
python
def plot_sbox_heatmap(self, sbox, ...):
"""将256维S-Box重塑为16×16矩阵,以热力图形式可视化
右侧面板显示统计信息(最小/最大/均值/标准差/中位数)
使用GridSpec布局防legend遮挡
"""
gs = fig.add_gridspec(1, 2, width_ratios=[4, 1], wspace=0.05)
ax_heatmap = fig.add_subplot(gs[0]) # 热力图
ax_stats = fig.add_subplot(gs[1]) # 统计信息
图x 单模型热力图(WGP_IM)
3.5.4 多模型对比图
python
def plot_multi_model_radar_comparison(self, all_metrics_dict, ...):
"""多模型雷达对比图:每个模型用不同颜色多边形表示
直观比较5种GAN架构在不同指标上的表现
"""
def plot_generation_time_comparison(self, timing_data, ...):
"""生成时间效率对比图
左侧:各阶段(生成/评估/可视化/导出)耗时详细对比
右侧:总处理时间排名
"""
图x 多模型对比图
3.5.5 时间效率对比
图x 时间效率对比图
3.5.6 S-Box热力图
3.5.7 图表类型总览
| 图表类型 | 功能 | 输出示例 |
|---|---|---|
| 训练损失曲线 | 展示G/D损失随epoch变化趋势 | training_curve_*.png |
| 单模型雷达图 | 5维密码学指标雷达对比 | *_radar.png |
| S-Box热力图 | 16×16矩阵可视化+统计信息 | *_heatmap.png |
| 多模型柱状对比 | 各模型5指标柱状图 | multi_model_comparison_*.png |
| 多模型雷达对比 | 各模型5指标雷达叠加 | *_multi_model_radar.png |
| 时间效率对比 | 各阶段耗时+总排名 | *_time_comparison.png |
| Loss分布图 | 各模型最终G/D Loss对比 | loss_distribution_*.png |
3.6 主程序整合
main.py作为主控程序,通过面向对象的 SBoxSystem 类整合所有功能,并提供两个核心功能入口:
python
class SBoxSystem:
"""主系统类,整合所有功能模块"""
def __init__(self):
self.trainer = None
self.evaluator = SBoxEvaluator()
self.exporter = SBoxExporter()
self.visualizer = SBoxVisualizer()
self.aes_baseline = AESSboxBaseline()
# 功能1:一键训练全部5种GAN架构
def train_all_models_interactive(self):
"""用户设置训练参数 → 依次训练5种模型 → 保存结果"""
# 功能2:全流程自动化
def full_auto_pipeline(self):
"""S-Box生成 → 密码学评估 → 可视化图表 → 数据导出 → AES对比
单个模型执行5个步骤,所有模型执行完成后统一对比"""
def run(self):
"""主循环:显示菜单 → 用户选择 → 执行功能"""
功能2的完整处理流程:
选择模型 → 第1个模型 → [生成S-Box → 密码学评估 → 可视化 → 导出] → 第2个模型 → ... → 全部完成后:
→ 多模型综合对比雷达图
→ 生成时间效率对比图
→ 指标热力矩阵图
→ 双射率分析图
→ AES差距深度分析图
→ 性能分布箱线图
→ 综合摘要报告
4. 实验结果
4.1 程序运行示例
系统启动后将显示欢迎界面和主菜单:
===================================================
基于GAN的密码学S-Box生成与评估系统
S-Box Generation & Evaluation System based on GAN
核心功能:
◆ 一键训练5种GAN架构模型
◆ 自动化S-Box生成+评估+可视化+导出
◆ AES基准对比与性能分析
◆ 多格式输出 (CSV/JSON/Excel)
===================================================
=======================主菜单 (Main Menu)=======================
1. 训练GAN模型 (Train All GAN Models) → 一键训练全部5种架构
2. S-Box全流程自动化 (Full Auto Pipeline) → 生成 + 评估 + 可视化 + 导出 + 对比
0. 退出系统 (Exit System) → 退出系统
4.2 GAN模型训练结果
训练过程中,系统实时输出损失值变化,并使用tqdm进度条显示每轮训练进度:
[开始训练] 模型类型: wgan_gp
- 训练轮数: 50
- 批次大小: 64
- 学习率(G/D): 0.0002/0.0002
Epoch 1/50: 100%|██████████████| 16/16 [00:03<00:00, 4.52it/s]
Epoch 50/50: 100%|█████████████| 16/16 [00:02<00:00, 5.61it/s]
[训练总结] 成功: 5/5 个模型
已保存的训练结果:
- results/original_gan/generator_final.pth
- results/dcgan/generator_final.pth
- results/wgan_gp/generator_final.pth
- results/wgp_im/generator_final.pth
- results/cgan/generator_final.pth
4.3 密码学性能评估结果
训练完成后,系统自动对每个模型生成的S-Box进行5项核心密码学指标评估:
[AES基准指标]
非线性度: 112.00 ← 接近Bent函数上界120
差分均匀度: 4.00 ← 最大差分概率2^-6
代数次数: 7.00 ← 达到最大值
SAC均值: 0.5000 ← 严格雪崩准则
BIC均值: 0.5000 ← 比特独立准则
[各模型平均性能对比]
模型: ORIGINAL_GAN 非线性度: 96.40 差分均匀度: 8.20
模型: DCGAN 非线性度: 95.45 差分均匀度: 8.35
模型: WGAN_GP 非线性度: 100.33 差分均匀度: 7.41
模型: WGP_IM 非线性度: 98.10 差分均匀度: 7.90
模型: CGAN 非线性度: 97.22 差分均匀度: 8.10
4.4 可视化图表输出
系统自动生成的可视化图表保存在 results/charts/ 目录下:
- 训练损失曲线图:直观展示生成器与判别器的对抗训练收敛过程
- 各模型雷达图:5维指标的多边形对比
- S-Box热力图:16×16矩阵的颜色映射可视化
- 多模型对比雷达图:叠加展示5种架构的性能差异
- 时间效率对比图:左右双面板展示各阶段耗时分布和总排名
4.5 数据导出文件
系统自动导出CSV和JSON双格式的S-Box数据文件,包含:
- S-Box原始值(256维整数数组)
- 密码学评估指标
- 与AES基准的差值分析
4.6 项目运行实例(视频)
5. 实验过程中遇到的问题和解决过程
问题1:热力图图例遮挡问题
在生成热力图时,右侧colorbar图例会与统计信息面板重叠,导致图表不可读。
解决方案 :重新设计布局方案。将原先的单一面板改为使用 GridSpec 双面板布局,热力图区域和统计信息区域分离,同时在GridSpec中设置 width_ratios=[4, 1] 确保合理的空间分配,并调整 wspace=0.05 保持紧凑美观。
python
gs = fig.add_gridspec(1, 2, width_ratios=[4, 1], wspace=0.05)
ax_heatmap = fig.add_subplot(gs[0]) # 热力图
ax_stats = fig.add_subplot(gs[1]) # 右侧统计面板
问题2:多格式文件加载兼容性
用户可能需要加载不同格式的S-Box文件(.npy, .csv, .json),如果格式不统一会导致解析错误。
解决方案 :在main.py中实现通用的文件加载器 load_sbox_from_file(),根据文件扩展名自动选择解析策略,并处理多种数据组织结构(如CSV中的 sbox_values 列、JSON中的 values 字段等)。
6. 课程总结与感想体会
6.1 课程学习总结
通过本学期《Python程序设计》课程的学习,我从Python基础语法入门,逐步掌握了以下核心技能:
- 编程基础:变量与数据类型、控制流(分支和循环)、函数定义和模块化编程、面向对象编程。
- 数据处理:使用NumPy进行数组运算和矩阵操作,使用Pandas进行数据分析和统计,掌握了数据筛选、聚合、透视等基本方法。
- 数据可视化:运用Matplotlib和Seaborn生成各种图表(折线图、柱状图、雷达图、热力图等),并能根据需求自定义图表样式和布局。
- 机器学习和深度学习:学习了神经网络的基本原理(前向传播、反向传播、损失函数),掌握了PyTorch框架的使用(张量操作、自动求导、模型构建、训练流程)。
- 版本控制:掌握了Git的基本操作(init、add、commit、push、pull),能够将代码托管到Gitee平台进行版本管理。
- 开发工具:熟练使用PyCharm IDE进行代码编写、调试和项目管理,能够在命令行环境中运行和测试Python程序。
6.2 综合实践体会
本次综合实践项目是课程学习成果的集中体现。开发"基于GAN的密码学S-Box生成与评估系统"的过程中,我深刻体会到:
(1)理论与实践的结合:密码学中的S-Box设计理论(有限域运算、仿射变换、Walsh-Hadamard变换等)与深度学习技术(GAN、卷积网络、自注意力机制)的结合并非简单的技术叠加,而是需要在理解双方原理的基础上找到合理的结合点。例如,将256维的S-Box重塑为16×16矩阵输入卷积网络,就是考虑了S-Box作为8×8置换表的内在结构特点。
(2)工程化思维的重要性:一个完整的项目不仅需要核心功能能跑通,还需要考虑架构设计、模块划分、错误处理、用户交互等多方面因素。本项目中采用的分层架构(core/modules/main)和面向对象设计,使得代码具有良好的扩展性和可维护性。
(3)调试能力的成长:在开发过程中遇到的各类错误(类型错误、维度不匹配、Pandas操作歧义、matplotlib布局问题等)让我真正体会到调试能力是编程能力的核心组成部分。学会阅读错误信息、定位问题根源、查阅文档、设计修复方案,是整个实验中最有价值的学习过程。
(4)AI辅助编程的体验:在实验过程中,我使用了LLM辅助代码生成和调试,体验到了AI在代码生成、错误修复、文档编写方面的效率提升。同时也认识到,理解代码原理、做出正确设计决策仍然是人类开发者的核心价值。
6.3 对本课程的意见和建议
-
适当增加算法与数据结构的实践:Python在实际项目中常常涉及复杂的数据处理流程,适当补充算法复杂度分析、数据结构选择等内容会更有帮助。
-
增加团队协作项目:目前的实验以个人为主,如果能引入小组协作项目(如使用Git进行团队协作开发),将更贴近实际工作场景。
-
推荐继续保持AI辅助编程的教学:AI工具已成为现代软件开发的标配,课程中引导学生正确使用AI工具(而非禁用)是非常前瞻的做法。
7. 参考资料
- 舒瑞,等. 基于生成对抗网络模型的S盒构造方法.
- 程琴琴. 基于智能计算的S盒构造与分析.
- 闫庆文. 分组密码S盒的设计与应用研究.
- 殷新春,等. 基于遗传算法的S盒的构造.
- 金晨辉,等. AES密码算法S盒的线性冗余研究.
- 冷永清,等. S盒密码学指标自动评估系统设计与实现.
- 李莹,等. 新型数字域混沌系统的设计及其在S盒构造中的应用研究.
- 刘坤尧,等. SMS4算法S盒的一种极紧凑实现方法.
- Design of S-boxes based on neural networks. IEEE Access.
- A Style-Based Generator Architecture for Generative Adversarial Networks. CVPR.
- Improved Procedures for Training Primal Wasserstein GANs. ICLR.
- Goodfellow I, et al. Generative Adversarial Networks. NeurIPS 2014.
- Daemen J, Rijmen V. The Design of Rijndael: AES - The Advanced Encryption Standard.
- Nyberg K. Differentially uniform mappings for cryptography. EUROCRYPT 1993.