vehutech/rsa_algorithm
GitHub: vehutech/rsa_algorithm
一个使用纯 Python 标准库从零实现 RSA 密钥生成、加密与解密全流程的命令行教学工具,帮助用户理解非对称密码学的数学原理。
Stars: 0 | Forks: 0
# RSA 算法实现
这是一个命令行界面 (CLI) 应用程序,用于演示 RSA (Rivest-Shamir-Adleman) 密码算法的实现,供教育和实际使用。
## 📋 目录
- [概述](#overview)
- [功能](#features)
- [算法说明](#algorithm-explanation)
- [安装](#installation)
- [用法](#usage)
- [项目结构](#project-structure)
- [工作原理](#how-it-works)
- [示例](#examples)
- [安全注意事项](#security-considerations)
- [贡献](#contributing)
- [许可证](#license)
## 🔍 概述
RSA 是最广泛使用的公钥密码算法之一。此实现提供了 RSA 加密和解密工作原理的实际演示,非常适合用于教育目的和理解非对称密码学的基础知识。
### 主要功能
- ✅ 无外部依赖的纯实现
- 🖥️ 易于交互的命令行界面
- 🔐 完整的 RSA 密钥生成、加密和解密
- 📚 带有清晰文档的教育性代码结构
- 🚀 开箱即用
## 🛠️ 功能
- **密钥生成**:生成 RSA 公钥和私钥对
- **加密**:使用公钥加密消息
- **解密**:使用私钥解密消息
- **CLI 界面**:用户友好的命令行交互
- **无依赖**:仅使用标准库构建
## 🔢 算法说明
RSA 算法基于分解大复合数的数学难度。以下是其工作原理:
### 密钥生成
1. **选择两个不同的质数** p 和 q
2. **计算 n = p × q**(两个密钥的模数)
3. **计算 φ(n) = (p-1)(q-1)**(欧拉函数)
4. **选择 e**,使得 1 < e < φ(n) 且 gcd(e, φ(n)) = 1
5. **计算 d**,使得 d × e ≡ 1 (mod φ(n))
### 公钥:(n, e)
### 私钥:(n, d)
### 加密
- 密文 = (明文^e) mod n
### 解密
- 明文 = (密文^d) mod n
## 🚀 安装
### 前提条件
- Python 编译器或合适的 IDE
- 不需要额外的库
### 步骤
1. **克隆仓库**
git clone https://github.com/vehutech/rsa_algorithm.git
2. **导航到项目目录**
cd rsa_algorithm
3. **编译代码**
在 Windows 上
python rsa_algorithm.py
在 macOS 上
python3 rsa_algorithm.py
### 替代方案:使用 IDE
1. 下载或克隆仓库
2. 在你喜欢的 IDE 中打开项目(Code::Blocks、Visual Studio 等)
3. 直接从 IDE 编译并运行
## 💻 用法
### 运行应用程序
```
./rsa_algorithm
```
应用程序将为你提供一个菜单驱动的界面,你可以在其中:
1. **生成 RSA 密钥对**
- 创建公钥和私钥
- 显示生成的密钥
2. **加密消息**
- 输入你的明文消息
- 使用公钥进行加密
- 显示加密后的密文
3. **解密消息**
- 输入密文
- 使用私钥进行解密
- 显示原始消息
## 📁 项目结构
```
rsa_algorithm/
├──
├── genPrime.py # Generate prime numbers
├── main.py # Main entry file
├── rsa.h # Header file with declarations
├── modeInverse.py # A function to inverse mode
├── getPrime.py # A mini dev version to get random prime num from users.
├── validatePrime.py # To validate input is actually prime and meet certain range requirement
└── README.md
```
## ⚙️ 工作原理
### 模块细分
#### `main.py`
- 应用程序的入口点
- 处理主程序流程和用户界面
#### `genPrime.py`
- 包含生成质数的函数
- 实现质数生成算法
#### `modInverse.py`
- 计算模反元素
- 对于计算私钥组件至关重要
#### `validatePrime.py`
- 验证数字是否为质数
- 实现质数测试算法
#### `getPrime.py`
- 处理所有用户输入操作
- 提供输入验证和处理
### 流程说明
1. **密钥生成**:使用 `genPrime.py` 和 `modInverse.py` 创建密钥对
2. **用户交互**:`getPrime.py` 管理所有用户输入
3. **验证**:`validatePrime.py` 确保数学上的正确性
4. **主要逻辑**:`main.py` 协调整个 RSA 过程
## 📝 示例
### 示例 1:基本加密/解密
```
1. Generate Keys
Public Key: (n=3233, e=17)
Private Key: (n=3233, d=413)
2. Encrypt "HELLO"
Input: "HELLO"
Output: [encrypted_values]
3. Decrypt
Input: [encrypted_values]
Output: "HELLO"
```
### 示例 2:数字示例
```
Plaintext: 123
Public Key: (n=3233, e=17)
Ciphertext: 123^17 mod 3233 = 855
Decryption: 855^413 mod 3233 = 123
```
## 🔒 安全注意事项
### 教育目的
⚠️ **重要提示**:此实现专为教育目的而设计,如果不采取额外的安全措施,可能不适合在生产环境中使用。
### 安全说明
- **密钥大小**:在实际应用中使用更大的质数
- **随机数生成**:确保密码学上安全的随机性
- **填充**:考虑实现 OAEP 或 PKCS#1 填充
- **侧信道攻击**:生产环境的实现应防范时序攻击
### 最佳实践
- 切勿在不同的应用程序中重复使用密钥
- 确保私钥安全并加密
- 使用适当的密钥大小(实际应用中至少为 2048 位)
- 实施适当的错误处理和验证
## 📄 许可证
该项目是开源的。请查看仓库以获取特定的许可证信息。
## 🙏 致谢
- RSA 算法的发明者:Rivest、Shamir 和 Adleman
- 此教育实现的贡献者
- 提供密码学教育资源的开源社区
## 📚 其他资源
### 了解更多关于 RSA 的信息
- [维基百科上的 RSA 算法](https://en.wikipedia.org/wiki/RSA_(cryptosystem))
- [现代密码学简介](https://www.cryptography.io/)
- [密码工程](https://cryptoengineering.com/)
### 相关主题
- 公钥密码学
- 质数生成
- 模运算
- 密码学安全
**注意**:此实现仅用于教育目的。对于生产环境的密码学需求,请使用成熟的密码学库并咨询安全专家。
*由 D Vehu Alonge 充满 ❤️ 地为密码学教育而制作*
标签:RSA算法, 加密解密, 密码学, 手动系统调用, 教学项目, 文档结构分析, 逆向工具