DimitrisTzakas/enigma-machine-simulator
GitHub: DimitrisTzakas/enigma-machine-simulator
一个使用 Python Tkinter 构建的 Enigma M3 密码机交互式桌面模拟器,用于教育和演示转子式机械加密原理。
Stars: 0 | Forks: 0

# Enigma 模拟器
一个带有 Tkinter GUI 的功能性 **Enigma M3 (Kriegsmarine)** 模拟器 —— 17 岁时从零开始构建,现已针对 Python 3 更新。
  
## 简介
该项目最初于 17 岁(希腊高中三年级 Γ' Λυκείου)时使用 Python 2 开发,最近更新到了 Python 3,同时保留了 2017 年的原始逻辑。该模拟器模拟了德国 Enigma M3 机器,可让你实时探索基于转子的加密过程。
## 功能
- 可从 8 个转子 (I-VIII) 中进行选择
- 可设置每个转子的 Ring settings 和起始位置
- Reflector 选择 (B/C)
- Plugboard 字母交换
- 实时按键加密及 UI 更新
- 可选的文本模式,用于加密长短语
- 按键事件音效 (Windows)
## 如何运行
在项目文件夹中打开终端并运行:
```
python src/main.py
```
请确保已安装 Python 3.x,并保留 `assets/` 目录以提供音效和图像资源。
## 环境要求
- Python 3.x
- Tkinter(Python 自带)
- 音效使用 `winsound`,仅在 Windows 上播放;该应用程序在 macOS/Linux 上运行时没有声音。
## 工作原理
加密流程模拟了真实的机器:每个字母依次通过 plugboard、三个转子,经过 reflector 反射,再反向通过转子和 plugboard。步进(包括双步进异常)以及 VI-VIII 双缺口转子均得到了忠实模拟。
有关算法的详细解析,请参阅 [`docs/ALGORITHM.md`](docs/ALGORITHM.md)。
## 代码模块
- `src/main.py` — GUI 与用户交互
- `src/engine.py` — Enigma 机器逻辑
- `src/wckToolTips.py` — 提示框辅助工具
## 注意事项
- 本仓库是旧源码存档的清理版本。
- 存档版本保留在 `archive/` 下,以供历史参考。
- 代码保留了原始风格,仅供学习参考,非生产级别。
## 图片鸣谢
包含历史图片用于教育说明:
- Enigma 转子照片 —— 来自 Wikimedia Commons:
[针触点](https://commons.wikimedia.org/wiki/File:Enigma-rotor-pin-contacts.jpg) 和
[平整触点](https://commons.wikimedia.org/wiki/File:Enigma-rotor-flat-contacts.jpg)。
请查看各自的文件页面以获取原作者及许可信息。
## 鸣谢
原始项目(2017年)由 Dimitris Tzakas 开发。2026年针对 Python 3 兼容性进行了更新。
标签:Python, Tkinter, 加密算法, 历史仿真, 密码学, 手动系统调用, 无后门, 桌面GUI