Skip to content

Releases: yunfan007/SafeFile

SafeFile1.0.0-alpha

Choose a tag to compare

@yunfan007 yunfan007 released this 31 Jul 02:26
672d87d

SafeFile 发行版说明

版本: v1.0.0
发布日期: 2026-07-31
项目主页: GitHub


简介

SafeFile 是一款轻量级、安全的文件加密工具,同时集成了 ZIP 压缩/解压功能。它使用 AES-256-CBC 加密算法,结合 CRC32 校验 和 时间过期控制,确保您的文件在传输或存储过程中的机密性与完整性。程序提供简洁的图形界面,适合个人或小团队日常使用。


主要功能

🔐 文件加密

  • 支持任意类型文件(单个文件)加密,输出 .sf 格式密文。
  • 加密时需设置 密码 和 有效截止时间,超过该时间将无法解密。
  • 采用 AES-256-CBC 加密,密钥通过双重 SHA-256 哈希派生。
  • 每个文件使用 随机 IV(初始化向量),增强安全性。
  • 加密过程中对每个数据块附加 CRC32 校验值,解密时自动验证完整性。

🔓 文件解密

  • 仅支持解密本程序生成的 .sf 文件(兼容 v1、v2、v3 版本)。
  • 解密前会校验:
    • 密码是否正确(通过密钥哈希比对)。
    • 文件是否已过期(基于加密时设定的时间)。
    • 数据完整性(CRC32 校验)。
  • 解密失败时给出明确错误提示(密码错误、过期、校验失败等)。

📦 ZIP 压缩/解压

  • 内置 ZIP 压缩功能,可将选定文件夹打包为 .zip 文件。
  • 支持解压标准 ZIP 压缩包到指定目录。

使用指南

加密文件

  1. 切换到 “加密文件” 标签页。
  2. 点击 “选择文件” 选取待加密的文件。
  3. 点击 “选择输出文件夹” 指定密文输出目录(文件名自动添加 .sf 后缀)。
  4. 输入密码(最多 25 位),并勾选“显示密码”可查看明文。
  5. 设置 许可时间(即该文件可被解密的最后期限)。
  6. 点击 “加密” 开始处理,进度条会显示运行状态。
  7. 加密完成后,会在输出目录生成 .sf 文件。

解密文件

  1. 切换到 “解密文件” 标签页。
  2. 点击 “选择文件” 选取 .sf 密文文件。
  3. 点击 “选择输出文件夹” 指定解密后文件的存放位置。
  4. 输入加密时使用的密码。
  5. 点击 “解密”,程序将自动验证密码、有效期和完整性。
  6. 解密成功则恢复原始文件;失败会提示具体原因。

压缩/解压 ZIP

  • 压缩:在 “打包文件” 标签页中,点击“选择文件夹”选取要压缩的目录,再选择输出文件夹,点击“压缩”即可生成 SafeFile_日期_Compress.zip。
  • 解压:选择待解压的 .zip 文件,指定解压目标文件夹,点击“解压”即可。

安全性说明

  • 加密算法:AES-256-CBC(Cipher Block Chaining 模式),填充模式为 PKCS7(v3 版本)或 Zeros(v1/v2 兼容)。
  • 密钥派生:用户密码经过两次 SHA-256 哈希,产生 32 字节密钥。
  • 随机 IV:每个文件使用独立的 16 字节随机 IV,由 RNGCryptoServiceProvider 生成。
  • 完整性校验:加密时每 1MB 数据块附带 CRC32 校验值,解密时验证,防止数据篡改或传输错误。
  • 时间锁定:加密时写入绝对时间(DateTime.ToBinary()),解密时对比本地时间(优先从 NTP 服务器 ntp.ntsc.ac.cn 获取标准时间,失败则回退到系统本地时间)。若当前时间晚于许可时间,拒绝解密。
  • 兼容旧版:支持 v1/v2 格式(使用固定 IV "1234567890123456" 和 Zeros 填充),但推荐使用 v3 以获得更高安全性。

系统要求

  • 操作系统:Windows 7 / 8 / 10 / 11(.NET Framework 4.8 或 .NET Core 3.1+,取决于编译目标)
  • 依赖库:
  • 磁盘空间:约 20 MB(包含运行时)
  • 内存:建议 512 MB 以上,加密大文件时需更多内存(缓存 1MB 块)。

安装与运行

方式一:直接运行(已编译)

  • 从 Releases 下载最新的 .exe 或 .zip 包。
  • 解压后双击 SafeFile.exe 启动即可(无需安装)。

方式二:源码编译

  1. 克隆仓库:
    git clone https://github.com/yourusername/SafeFile.git
  2. 使用 Visual Studio 2019+ 打开解决方案。
  3. 还原 NuGet 包(GuerrillaNtp 和 SunnyUI)。
  4. 选择 Release 配置,生成解决方案。
  5. 在 bin\Release 目录下获得可执行文件。

注意事项

  • 密码丢失:密码无法恢复,加密时请妥善保管。
  • 时间依赖:解密时依赖系统时间或 NTP 服务器时间,请确保系统时间准确,否则可能导致过期判断错误。
  • 文件大小限制:加密时,普通模式(类型0)限制 512 MB,大文件模式(类型1)限制 8 GB(代码中默认使用类型0,可通过修改 ActEncType 调整)。
  • 备份原文件:加密操作不会删除原始文件,请自行决定是否保留。
  • CRC32 校验:若解密时提示校验失败,说明文件已被篡改或传输损坏,请重新获取原始密文。

贡献与许可

  • 贡献:欢迎提交 Issue 或 Pull Request。请确保代码风格一致,并附上测试用例。
  • 许可证:本项目采用 MIT License,您可以自由使用、修改和分发,但需保留版权声明。

更新日志

v1.0.0 (2026-07-31)

  • 初始版本发布
  • 实现 AES-256-CBC 加密/解密(v3 格式)
  • 支持 CRC32 校验和时间过期控制
  • 集成 ZIP 压缩/解压功能
  • 使用 SunnyUI 美化界面
  • 支持 NTP 时间同步

联系我们


感谢使用 SafeFile! 如有任何建议或问题,欢迎反馈。