FakeCrypt 是一个跨平台的文件加密/解密命令行工具。它通过在文件头部添加特定的加密标记来实现文件保护,使文件无法被正常程序读取。解密时自动移除标记,恢复原始文件。
- 跨平台支持:Windows、Linux、macOS 全平台兼容
- 智能识别:自动检测文件是否已加密
- 防重复加密:绝不允许对已加密文件重复加密
- 完整性验证:内置校验码机制,确保文件完整性
- 时间戳记录:记录加密时间,便于追踪
- 安全操作:使用临时文件,避免数据损坏
- 两种模式:命令行参数模式和交互模式
- 批量处理:支持目录递归批量操作
| 偏移 | 长度 | 字段 | 说明 |
|---|---|---|---|
| 0x00 | 4字节 | 魔数签名 | "MYCR" (0x4D 0x59 0x43 0x52) |
| 0x04 | 2字节 | 版本号 | 主版本.副版本 |
| 0x06 | 1字节 | 算法标识 | 算法类型标识 |
| 0x07 | 1字节 | 标记长度 | 固定为32字节 |
| 0x08 | 4字节 | 预留字段 | 未来扩展使用 |
| 0x0C | 8字节 | 时间戳 | Unix时间戳(毫秒) |
| 0x14 | 8字节 | 文件大小 | 原始文件大小 |
| 0x1C | 8字节 | 校验码 | 简单数学校验码 |
[32字节加密标记头] + [原始文件内容]
使用自定义的多项式滚动校验算法:
- 初始种子:
0x123456789ABCDEF0 - 多项式运算:
x^7 + x^3 + x^2 + 1(简化版) - 黄金比例乘数:
0x9E3779B97F4A7C15
- C++17 兼容编译器
- 标准文件系统库支持
cl /EHsc /std:c++17 /O2 FakeCrypt.cppg++ -std=c++17 -O2 -o FakeCrypt.exe FakeCrypt.cpp -lstdc++fsg++ -std=c++17 -O2 -o FakeCrypt FakeCrypt.cpp -lstdc++fs# 显示帮助信息
FakeCrypt help
FakeCrypt -h
FakeCrypt --help
# 显示版本信息
FakeCrypt version
FakeCrypt -v
FakeCrypt --version
# 自动加密/解密文件(智能识别)
FakeCrypt <文件路径># 启动交互模式
FakeCrypt
# 可用命令:
# encrypt <文件> - 加密指定文件
# decrypt <文件> - 解密指定文件
# check <文件> - 检查文件加密状态
# info <文件> - 显示加密文件详细信息
# header <文件> - 分析加密文件头
# batch <目录> - 批量处理目录中的文件
# help - 显示帮助信息
# exit - 退出程序# 示例1:加密单个文件
FakeCrypt secret_document.pdf
# 输出:[+] 检测到未加密文件,执行加密...
# 示例2:解密文件(自动识别)
FakeCrypt secret_document.pdf
# 输出:[+] 检测到已加密文件,执行解密...
# 示例3:进入交互模式
FakeCrypt
> encrypt family_photo.jpg
> check report.docx
> info secret_document.pdf
> batch /home/user/documents
> exit
# 示例4:检查文件状态
FakeCrypt
> check important.docx
# 输出:[+] 文件已被加密 或 [-] 文件未被加密
# 示例5:显示加密信息
FakeCrypt
> info encrypted_file.bin
# 输出:
# [+] 加密信息:
# 版本: v1.0
# 时间: 2024-01-15 14:30:25.123
# 原始大小: 1048576 字节
# 算法标识: 0x1批量处理功能支持递归遍历目录,自动识别并处理所有文件:
# 在交互模式下使用
FakeCrypt
> batch /path/to/directory
# 程序将:
# 1. 扫描目录下所有文件(包括子目录)
# 2. 统计已加密和未加密文件数量
# 3. 询问确认后开始处理
# 4. 自动加密未加密文件,解密切已加密文件程序包含完整的错误处理机制:
- 文件不存在:提示错误信息
- 重复加密:拒绝操作并提示
- 解密未加密文件:提示无需解密
- 权限不足:提示访问被拒绝
- 磁盘空间不足:操作前检查可用空间
- 文件损坏:校验码验证失败时提示
- 数据备份:操作前建议备份重要文件
- 防误操作:批量处理前会请求确认
- 临时文件:操作使用
.tmp扩展名的临时文件 - 校验机制:加密标记包含校验码,防止数据损坏
- 大小验证:解密时验证文件大小,防止篡改
- 文件大小:支持最大文件大小为 16EB(理论上)
- 文件类型:支持所有类型的文件
- 并发操作:不支持多线程同时操作同一文件
- 网络文件:不支持网络路径文件(取决于系统权限)
当前版本:v1.0
版本历史:
- v1.0 (2024-01-15): 初始版本,支持基础加密/解密功能
本项目为开源工具,可用于个人和商业用途。
-
编译错误:找不到文件系统库
# Linux/macOS 需要链接 stdc++fs g++ -std=c++17 -o FakeCrypt FakeCrypt.cpp -lstdc++fs -
Windows 中文显示乱码
# 程序已自动设置UTF-8编码 # 如仍有问题,请将终端编码设置为UTF-8
-
文件操作被拒绝
- 检查文件是否被其他程序占用
- 检查用户权限是否足够
- 检查磁盘空间是否充足
如有问题或建议,请参考源代码注释或提交问题报告。
本工具仅供学习和合法用途使用。使用者应对自己的操作负责,作者不对因使用本工具造成的任何数据损失负责。操作重要文件前请务必备份。