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, 信息安全, 威胁情报, 安全学习, 密码学, 密钥派生, 对称加密, 开发者工具, 手动系统调用, 数据保护, 数据加密, 文件加密, 文件解密, 无后门, 编程工具, 网络安全, 网络调试, 自动化, 自动化审计, 远程代码执行, 逆向工具, 隐私保护