snehalathaArakkonam/encrypt-decrypt-tool-c
GitHub: snehalathaArakkonam/encrypt-decrypt-tool-c
一个使用 C 语言实现的密码学教育控制台工具,集成八种经典与现代加密算法,帮助用户学习和理解密码学基础概念。
Stars: 0 | Forks: 0
# 密码学加密-解密工具
## 概述
**密码学加密-解密工具**是一个使用 **C** 语言实现的完整控制台密码学套件。它提供了一套全面的传统与现代加密算法,并配备了交互式菜单、文件持久化、活动日志和强度分析。该工具专为教育目的而设计,展示了基本的密码学概念,如字符串操作、模运算、按位运算和文件处理。
## 功能
- **8 种加密算法**
- Caesar Cipher (移位密码)
- Vigenère Cipher (多表替换)
- Reverse Cipher (文本反转)
- Atbash Cipher (镜像映射)
- XOR Cipher (按位 XOR)
- RSA Cipher (简化的公钥加密)
- Base64 编码
- **交互式菜单系统** – 提供易于使用的加密和解密提示。
- **历史记录追踪** – 每次加密/解密操作都会带有时间戳并存储在二进制文件 (`encryption_history.dat`) 中。
- **RSA 密钥生成** – 生成公钥/私钥对并自动存储 (`rsa_keys.dat`)。
- **强度分析** – 根据字符多样性、唯一字符和字符类型评估加密文本的质量。
- **活动日志** – 所有重要操作都会带有时间戳记录到 `cryptography.log` 中。
- **文件持久化** – 从磁盘保存和加载加密历史记录。
- **输入验证** – 对所有用户输入进行验证以防出错。
## 已实现的算法
| 算法 | 类型 | 描述 |
|-----------------|--------------------|-------------|
| **Caesar** | 替换 | 将每个字母移动固定的位数。 |
| **Vigenère** | 多表 | 使用关键字来确定每个字符的可变移位。 |
| **Reverse** | 转置 | 反转整个字符串。 |
| **Atbash** | 替换 | 将每个字母映射到字母表中的相反位置 (A↔Z, B↔Y, …)。 |
| **XOR** | 流密码 | 使用重复的密钥进行按位 XOR。 |
| **RSA** | 公钥 | 使用小素数进行演示的简化实现。 |
| **Base64** | 编码 | 使用 64 字符的字母表将二进制数据转换为 ASCII 文本。 |
### 前置条件
- C 编译器(推荐使用 GCC)
- `make`(可选,用于使用提供的 Makefile)
- 标准 C 库(无外部依赖)
### 使用 Make 编译
```
make
Compile Manually
bash
gcc -o crypto cryptography.c -lm
Clean Object Files
bash
make clean
Usage
Run the executable:
bash
./crypto
The main menu will appear:
```
# ========================================
加密-解密工具
密码学套件 v1.0
1. 加密文本
2. 解密文本
3. 查看加密历史
4. 生成 RSA 密钥
5. 分析加密强度
6. 保存到文件
7. 从文件加载
8. 清除历史
9. 退出
========================================
输入选择:
按照屏幕上的提示选择算法、输入密钥并查看结果。
文件结构
文件 描述
cryptography.c 包含所有逻辑和菜单集成的主程序。
caesar.c Caesar 密码功能。
vigenere.c Vigenère 密码功能。
rsa.c RSA 辅助功能(素数、最大公约数、模幂、密钥生成)。
xor.c XOR 密码功能。
base64.c Base64 编码/解码功能。
utils.c 实用工具功能(日志记录、时间格式化)。
encryption_history.dat 存储加密记录的二进制文件。
rsa_keys.dat 存储 RSA 密钥对的二进制文件。
cryptography.log 所有活动的文本日志。
README.md 本文档。
Makefile 构建自动化脚本。
使用示例
使用 Caesar Cipher 加密
text
输入选择: 1
=== 选择加密方式 ===
1. Caesar Cipher(简单移位)
2. Vigenere Cipher(关键字移位)
3. Reverse Cipher(文本反转)
4. Atbash Cipher(镜像映射)
5. XOR Cipher(按位 XOR)
6. RSA Cipher(公钥)
7. Base64 编码
8. 返回主菜单
输入算法: 1
输入要加密的文本: HELLO
输入移位数 (1-25): 3
=== 加密结果 ===
原文: HELLO
加密后: KHOOR
解密后: HELLO
✅ 解密成功!
生成 RSA 密钥
text
输入选择: 4
已生成 RSA 密钥:
素数1: 7, 素数2: 11
模数: 77
公钥 (e): 13
私钥 (d): 37
RSA 密钥已保存到 rsa_keys.dat
强度分析
text
输入选择: 5
输入原始文本: HELLO
输入加密文本: KHOOR
=== 加密强度分析 ===
原始长度: 5 个字符
加密长度: 5 个字符
唯一字符数: 4
字符多样性: 80%
字符类型: 大写=5, 小写=0, 数字=0, 特殊字符=0
强度: 强 🔒🔒
建议:适合日常使用
## 注意事项
RSA 已被简化 – 使用小素数 (≤ 47),并且仅适用于小于模数的数字消息。它仅用于学习,不适用于现实世界中的安全场景。
Base64 – 根据 RFC 4648 标准进行编码和解码,并带有适当的填充。
历史记录 – 最多存储 100 条记录;存满后旧记录将被覆盖。
所有算法均同时支持加密和解密;该工具会自动处理密钥输入和验证。
## 许可证
## 本项目基于 MIT 许可证授权 – 有关详细信息,请参阅 LICENSE 文件。
## 致谢
受到经典密码学教科书和在线资源的启发。
作为 C 语言编程技能和密码学概念的全面演示而构建。
享受密码学!🔐
标签:加密解密, 密码学, 手动系统调用, 教学工具