alok-mishra143/File-Encryptor

GitHub: alok-mishra143/File-Encryptor

一个基于 C++20 的轻量级文件加密学习项目,支持多线程并行处理和自定义 Emoji 编码,旨在探索二进制文件 I/O 与并行加密架构设计。

Stars: 0 | Forks: 0

# 文件 Encryptor ### 高性能 C++20 文件加密与解密 传统与并行文件加密,支持可配置的多线程、基于分块的处理、批量操作和性能基准测试。 ![C++](https://img.shields.io/badge/C%2B%2B-20-blue?style=for-the-badge&logo=c%2B%2B) ![Platform](https://img.shields.io/badge/Platform-Windows-0078D6?style=for-the-badge&logo=windows) ![Build](https://img.shields.io/badge/Build-MinGW--w64-success?style=for-the-badge) ![License](https://img.shields.io/badge/License-Educational-orange?style=for-the-badge)
## 概述 **File Encryptor** 是一个 C++20 项目,展示了文件加密的传统方法与并行方法。 它侧重于: - 高性能的基于分块的处理 - 多线程加密/解密 - 批量和目录处理 - 可配置的工作线程 - 性能基准测试 - 清晰的模块化架构 # 功能 - 传统单线程加密/解密 - 基于分块的并行处理 - 可配置的线程数 - 可配置的分块大小 - 批量文件处理 - 递归目录处理 - 文件扩展名过滤 - 吞吐量统计 - 交互式 CLI - 性能演示应用程序 - Windows 构建脚本 - 模块化 C++20 架构 # 截图 | 菜单 | 并行演示 | |------|---------------| | ![](https://raw.githubusercontent.com/alok-mishra143/File-Encryptor/main/docs/images/menu.png) | ![](https://raw.githubusercontent.com/alok-mishra143/File-Encryptor/main/docs/images/demo.png) | # 项目结构 ``` . ├── docs/ │ ├── ARCHITECTURE.md │ └── PARALLEL_IMPLEMENTATION.md │ ├── src/ │ └── app/ │ ├── encryptDecrypt/ │ ├── fileHanding/ │ └── Procesess/ │ ├── main.cpp ├── build.ps1 ├── build.bat ├── makefile ├── .env └── README.md ``` # 架构 ``` User │ ▼ Interactive CLI (main.cpp) │ ▼ Encryption Controller │ ┌───────────┴────────────┐ ▼ ▼ Sequential Engine Parallel Engine │ Split File into Chunks │ ┌──────────────┼──────────────┐ ▼ ▼ ▼ Thread 1 Thread 2 Thread N │ │ │ └──────────────┼──────────────┘ ▼ Write Processed Data │ ▼ Output File ``` 详细的图表请参见: ``` docs/ARCHITECTURE.md ``` # 项目组件 | 组件 | 用途 | |-----------|---------| | `main.cpp` | 交互式 CLI | | `encryptDecrypt/` | 串行与并行加密逻辑 | | `fileHanding/` | 文件工具和 `.env` 处理 | | `Procesess/` | 线程和任务管理 | | `parallel_demo` | 性能演示 | | `cryption` | 独立测试可执行文件 | # 前置条件 - Windows - PowerShell - MinGW-w64 - 支持 C++20 的 g++ 在项目根目录创建一个 `.env` 文件。 ``` 123 ``` 该文件应仅包含数字加密密钥。 # 构建 ## PowerShell(推荐) ``` # Clean 和 build ./build.ps1 -Clean -Target main ``` 构建所有可执行文件: ``` ./build.ps1 -Target all ``` ## Make ``` make ``` ## Batch ``` ./build.bat ``` # 可执行文件 | 可执行文件 | 描述 | |------------|-------------| | `encrypt_decrypt.exe` | 交互式应用程序 | | `parallel_demo.exe` | 并行性能演示 | | `cryption.exe` | 独立加密驱动程序 | # 运行 ## 交互式菜单 ``` ./encrypt_decrypt.exe ``` ## 并行演示 ``` ./parallel_demo.exe ``` ## 加密驱动程序 ``` ./cryption.exe ",ENCRYPT" ``` 示例 ``` ./cryption.exe "test/test1.txt,ENCRYPT" ``` # 并行处理 ``` Input File │ ▼ Split into Chunks │ ▼ +---------+---------+---------+---------+ | Chunk 1 | Chunk 2 | Chunk 3 | Chunk 4 | +---------+---------+---------+---------+ │ │ │ │ ▼ ▼ ▼ ▼ Thread1 Thread2 Thread3 Thread4 │ │ │ │ └─────────┴─────────┴─────────┘ ▼ Merge Processed Data ▼ Output File ``` # 性能指标 该项目记录的统计数据包括: - 已处理文件 - 已处理字节 - 处理时间 - 吞吐量 - 线程数 - 分块大小 这允许对不同的配置进行基准测试。 # 串行与并行对比 | 功能 | 串行 | 并行 | |----------|------------|----------| | 单线程 | 是 | 否 | | 多线程 | 否 | 是 | | 分块处理 | 否 | 是 | | 目录处理 | 是 | 是 | | 批处理 | 是 | 是 | | 性能统计 | 基础 | 详细 | | 可配置线程 | 否 | 是 | # 文档 | 文件 | 描述 | |------|-------------| | `docs/ARCHITECTURE.md` | 完整的架构图 | | `PARALLEL_IMPLEMENTATION.md` | 并行实现细节 | # 重要提示 - 串行的 Emoji 加密和并行的字节移位加密会产生不同的文件格式。 - 它们彼此**不兼容**。 - **不要**使用一种模式加密文件,然后使用另一种模式解密。 # 技术 - C++20 - STL Threads - Mutex - 原子操作 - 文件流 - PowerShell - MinGW-w64 # 未来改进 - AES 加密 - ChaCha20 支持 - 进度条 - 跨平台支持 - 压缩 - 内存映射文件 - SIMD 优化 - 基准测试套件 - GUI 应用程序 # 许可证 本项目仅供**教育目的**使用。 其加密算法是刻意简化的,**不应用于保护敏感数据**。
**使用 C++20 构建**
标签:AI合规