ShakalBhau0001/File-Encryption-CLI-Tool

GitHub: ShakalBhau0001/File-Encryption-CLI-Tool

一款基于 Python 的轻量级命令行工具,利用 Fernet 和 PBKDF2-HMAC 算法实现带有密码保护的任意文件加密与无损解密还原。

Stars: 3 | Forks: 0

# 🔐 File-Encryption-CLI-Tool 一个基于 Python 的**文件加密命令行工具**,允许用户通过终端命令使用密码**安全地加密任何文件**,并随后**将其解密回原始形式**。 本项目使用 **Fernet 对称加密** 和 **PBKDF2-HMAC 密钥派生**,专为**自动化**、**脚本编写**以及**安全学习目的**而设计。 ## 🧱 项目结构 ``` File-Encryption-CLI-Tool/ │ ├── file_encryption.py # Main CLI application └── README.md # Project documentation ``` ## ✨ 功能特性 ## 🔐 文件加密 - 加密**任何文件类型**(视频、图像、音频、文档、二进制文件等) - 使用 **Fernet (AES-128 认证加密)** - 使用 **PBKDF2-HMAC (SHA256, 390,000 次迭代)** 进行基于密码的密钥派生 - 生成带有 `.enc` 扩展名的安全加密文件 - 使用 **MAGIC header** 安全地存储元数据 ## 🔓 文件解密 - 将 `.enc` 加密文件解密回原始格式 - 恢复**原始文件名和内容** - 检测无效或损坏的加密文件 - 防止密码输入错误 ## 🖥 CLI 亮点 - 简洁明了的基于 **argparse** 的 CLI - 独立的**加密和解密**命令 - 支持自定义输出路径 - 受密码保护的操作 - 对脚本友好且易于自动化 - 适用于**所有平台** (Windows / Linux / macOS) - **支持所有文件格式** ## 🛠 使用的技术 | 技术 | 作用 | | -------------------------------------- | --------------------------- | | **Python 3** | 核心语言 | | **argparse** | 命令行解析 | | **cryptography (Fernet + PBKDF2HMAC)** | 加密和密钥派生 | | **secrets** | 安全盐值生成 | | **base64 / os** | 二进制和文件处理 | ## 📌 环境要求 请确保您已安装所需的依赖项: ``` pip install cryptography ``` `secrets`、`argparse`、`base64` 和 `os` 等标准库已随 Python 附带。 ## ▶️ 如何运行 **1. 克隆仓库:** ``` git clone https://github.com/ShakalBhau0001/File-Encryption-CLI-Tool.git ``` **2. 进入项目文件夹:** ``` cd File-Encryption-CLI-Tool ``` **3. 运行 CLI:** ``` python file_encryption.py ``` ## ▶️ 用法 ### 🔐 加密文件 ``` python file_encryption.py encrypt --input secret.pdf --password myStrongPass ``` ``` python file_encryption.py encrypt --input secret.pdf --password myStrongPass --output secret.enc ``` ### 🔓 解密文件 ``` python file_encryption.py decrypt --input secret.pdf.enc --password myStrongPass ``` ``` python file_encryption.py decrypt --input secret.pdf.enc --password myStrongPass --output ./output_folder ``` ## 📁 支持的文件格式 - **输入:** 任何文件类型 - **加密输出:** `.enc` - **解密输出:** 恢复为原始文件格式 ## ⚙️ 工作原理 **1️⃣ 密钥派生** - 密码 → PBKDF2-HMAC(SHA256, 390,000 次迭代) → 32 字节密钥 → Fernet 密钥 **2️⃣ 加密过程** - 使用 Fernet 加密文件数据 - 加密文件结构: [FILE][16 字节盐值][文件名长度][原始文件名][加密数据] **3️⃣ 解密过程** - 验证 MAGIC header - 提取盐值和文件名 - 重新派生加密密钥 - 将文件解密回原始格式 ## ⚠️ 常见错误 - **密码错误** → 解密失败 - **无效文件** → MAGIC header 缺失 - **文件损坏** → 解密出错 - **重命名 `.enc` 文件** → 仍然有效(元数据存储在内部) ## 🌟 未来改进 - 文件完整性哈希校验 - 文件夹加密支持 - 大文件的进度指示器 - 跨平台可执行文件构建 ## 📦 扩展版本 本仓库专注于作为一种**命令行 (CLI) 学习项目**实现的**特定隐写术技术**。 本项目的目标是: - 从实践层面理解隐写术的工作原理 - 试验数据隐藏技术 - 了解基于 CLI 的安全工具的结构 如需包含以下功能的**更高级的综合实现**: - 图像隐写术 - 音频隐写术 - 文件加密支持 请参考: 🔗 **[StegaVault-CLI](https://github.com/ShakalBhau0001/StegaVault-CLI)** ## ⚠️ 免责声明 本项目仅用于**教育和研究目的**。 它**并非为现实世界中的安全通信而设计**。 仅靠隐写术并不能保证机密性,因此不应被视为 对正规密码学安全措施的替代。 ## 🪪 作者 ## ⭐ 支持 如果您喜欢这个项目,请考虑在 GitHub 上给它点个 ⭐!
标签:AES-128, argparse, cryptography库, DNS 反向解析, Fernet, meg, PBKDF2-HMAC, ProjectDiscovery, Python, 信息安全, 威胁情报, 安全学习, 密码学, 密钥派生, 对称加密, 开发者工具, 手动系统调用, 数据保护, 数据加密, 文件加密, 文件解密, 无后门, 编程工具, 网络安全, 网络调试, 自动化, 自动化审计, 远程代码执行, 逆向工具, 隐私保护