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算法, 加密解密, 密码学, 手动系统调用, 教学项目, 文档结构分析, 逆向工具