Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FakeCrypt - 文件加密/解密工具

概述

FakeCrypt 是一个跨平台的文件加密/解密命令行工具。它通过在文件头部添加特定的加密标记来实现文件保护,使文件无法被正常程序读取。解密时自动移除标记,恢复原始文件。

特性

  • 跨平台支持:Windows、Linux、macOS 全平台兼容
  • 智能识别:自动检测文件是否已加密
  • 防重复加密:绝不允许对已加密文件重复加密
  • 完整性验证:内置校验码机制,确保文件完整性
  • 时间戳记录:记录加密时间,便于追踪
  • 安全操作:使用临时文件,避免数据损坏
  • 两种模式:命令行参数模式和交互模式
  • 批量处理:支持目录递归批量操作

技术原理

加密标记结构 (32字节)

偏移 长度 字段 说明
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 兼容编译器
  • 标准文件系统库支持

Windows (Visual Studio)

cl /EHsc /std:c++17 /O2 FakeCrypt.cpp

Windows (MinGW/G++)

g++ -std=c++17 -O2 -o FakeCrypt.exe FakeCrypt.cpp -lstdc++fs

Linux/macOS

g++ -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. 自动加密未加密文件,解密切已加密文件

错误处理

程序包含完整的错误处理机制:

  1. 文件不存在:提示错误信息
  2. 重复加密:拒绝操作并提示
  3. 解密未加密文件:提示无需解密
  4. 权限不足:提示访问被拒绝
  5. 磁盘空间不足:操作前检查可用空间
  6. 文件损坏:校验码验证失败时提示

安全注意事项

  1. 数据备份:操作前建议备份重要文件
  2. 防误操作:批量处理前会请求确认
  3. 临时文件:操作使用 .tmp 扩展名的临时文件
  4. 校验机制:加密标记包含校验码,防止数据损坏
  5. 大小验证:解密时验证文件大小,防止篡改

限制

  1. 文件大小:支持最大文件大小为 16EB(理论上)
  2. 文件类型:支持所有类型的文件
  3. 并发操作:不支持多线程同时操作同一文件
  4. 网络文件:不支持网络路径文件(取决于系统权限)

版本信息

当前版本:v1.0

版本历史:

  • v1.0 (2024-01-15): 初始版本,支持基础加密/解密功能

许可证

本项目为开源工具,可用于个人和商业用途。

故障排除

常见问题

  1. 编译错误:找不到文件系统库

    # Linux/macOS 需要链接 stdc++fs
    g++ -std=c++17 -o FakeCrypt FakeCrypt.cpp -lstdc++fs
  2. Windows 中文显示乱码

    # 程序已自动设置UTF-8编码
    # 如仍有问题,请将终端编码设置为UTF-8
  3. 文件操作被拒绝

    • 检查文件是否被其他程序占用
    • 检查用户权限是否足够
    • 检查磁盘空间是否充足

获取帮助

如有问题或建议,请参考源代码注释或提交问题报告。

免责声明

本工具仅供学习和合法用途使用。使用者应对自己的操作负责,作者不对因使用本工具造成的任何数据损失负责。操作重要文件前请务必备份。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages