yongjun37/sibeisafe
GitHub: yongjun37/sibeisafe
一个基于 React 和 Flask 构建的全栈文件加密工具,提供 Web 应用和 CLI 两种方式,通过密码或密钥文件对文件进行 AES-256 加解密。
Stars: 0 | Forks: 0
# Sibei Safe
一个 Web 应用程序,允许通过基于密码的加密方式,使用 AES-256 加密(Fernet cipher)对文件进行加密和解密。
## 技术栈
- **Frontend:** React (JavaScript)
- **Backend:** Python, Flask, Flask-CORS
- **密码学:** Python `cryptography` 库(AES-256 (Fernet), PBKDF2HMAC, SHA-256)
## 快速开始
### 环境要求
- python 3.9+
- npm 和 Node.js
### Backend
1. 进入你的 backend 目录。
2. 创建并激活虚拟环境 ***(可选但推荐)*** :
python -m venv .venv
source venv/bin/activate # 在 Windows 上使用 .venv\Scripts\Activate.ps1
3. 安装依赖项
pip install Flask flask-cors cryptography
4. 启动 Flask 服务器
python app.py # Backend 将运行在 http://localhost:5000
### Frontend
1. 进入 frontend 目录。
2. 启动开发服务器:
npm run dev
## 用法
1. 在浏览器中打开前端应用程序。
2. **加密:** 导航到 Encrypt 视图,上传文件,输入强密码,然后点击“Encrypt”。加密后的文件(以 `.enc` 结尾)将自动下载到你的设备。
3. **解密:** 导航到 Decrypt 视图,上传你的 `.enc` 文件,输入加密时使用的确切密码,然后点击“Decrypt”。原始文件将被还原并下载。
## CLI 工具
`crypto.py` 模块是该应用程序的核心组件,可以作为独立的 Python 脚本使用,也可以导入到其他项目中。
其中一个用例是 CLI 工具,这也是它在演变为 Web 应用程序之前的最初用例。
### 用法:
#### 1. 生成加密密钥文件
```
python crypto_cli.py genkey --out mykey.key # Creates a new encryption key and saves it to my.key
```
#### 2. 加密文件
**使用密钥文件:**
```
python crypto_cli.py encrypt --in document.pdf --out document.pdf.enc --key my.key
```
**使用密码:**
```
python crypto_cli.py encrypt --in document.pdf --out document.pdf.enc --password
# 系统将提示您输入并确认密码
```
#### 3. 解密文件
**使用密钥文件:**
```
python crypto_cli.py decrypt --in document.pdf.enc --out document.pdf --key mykey.key
```
**使用密码:**
```
python crypto_cli.py decrypt --in document.pdf.enc --out document.pdf --password
# 系统将提示您输入密码
```
#### 4. 校验文件 Hash(完整性检查)
**生成 hash:**
```
python crypto_cli.py hash --in document.pdf
# Output: SHA-256: a3c5f9e2b1d4c8a7f6e5...
```
**验证文件完整性:**
```
python crypto_cli.py verify --in document.pdf --hash a3c5f9e2b1d4c8a7f6e5...
# Output: ✅ 文件完整性已验证
```
### 退出码
| 代码 | 含义 |
| ---- | -------------------------------------------------- |
| `0` | 成功 |
| `1` | 用户/文件错误(缺少文件、输入无效) |
| `2` | 加密失败(密钥/密码错误、文件被篡改) |
## 路线图与未来改进
- **批量与目录加密:** 允许用户安全地一次性处理多个文件或整个文件夹。
- **预加密压缩:** 通过在加密前压缩文件来优化存储和传输时间。
- **云基础设施 (AWS S3):** 从本地文件处理过渡到安全、可扩展的云对象存储。
- **UI/UX 增强:** 继续优化 Web 界面,以提供更流畅、更直观的用户体验。
## 已完成开发内容
- **CLI 工具:** 开发了一个安全的命令行界面(`crypto_cli.py`),以直接与主加密引擎(`crypto.py`)进行交互
- **Frontend 和 Backend 集成:** 成功将 React UI 与 Flask 加密引擎连接起来。
## 作者注记
我开发 Sibei Safe 作为一个实践项目,以加深我对全栈开发和安全文件处理的实际理解。构建这个工具让我探索了几个关键概念。
### 学到的概念:
- **应用密码学:** 实现对称加密、基于密码的密钥派生 (PBKDF2) 以及安全地处理加密失败。
- **安全工具:** 为底层加密引擎设计了一个健壮的命令行界面。
- **全栈架构:** 学习了 React 和 Flask 的基础知识,并成功地在现代前端和 Python 后端之间建立了桥梁。
标签:Flask, React, Syscalls, 全栈应用, 密码学, 手动系统调用, 数据可视化, 文件加密, 逆向工具