archive

command module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 10, 2025 License: MIT Imports: 8 Imported by: 0

README

Archive

Go Version License Go Report Card

一个安全的文件压缩和加密工具,使用 RSA 4096位 和 AES 256位 CBC 模式提供强加密保护的 tar.xz 压缩解决方案。

✨ 特性

  • 🔒 强加密保护: 结合 RSA 4096位 和 AES 256位 CBC 模式加密
  • 📦 高效压缩: 基于 tar.xz 格式,提供优秀的压缩比
  • 🔑 密钥管理: 自动生成 RSA 公私钥对
  • 完整性校验: 内置压缩包完整性检查功能
  • 🚀 简单易用: 直观的命令行界面
  • 📊 进度显示: 可选的文件处理进度显示

🛠️ 安装

使用 go install

要求 Go 版本 >= 1.24

go install github.com/Rehtt/archive@latest
从源码构建
git clone https://github.com/Rehtt/archive.git
cd archive
go build -o archive

🚀 快速开始

1. 生成密钥对
archive gen

这将生成两个文件:

  • public.pem - 公钥(用于加密)
  • private.pem - 私钥(用于解密)

⚠️ 重要提醒: private.pem 必须妥善保管。如果丢失,加密的文件将无法解密!

2. 压缩文件
普通压缩
archive archive myfiles myfiles.tar.xz
加密压缩
archive archive -e public.pem myfiles myfiles.tar.xz
3. 解压文件
普通解压
archive unarchive myfiles.tar.xz extracted/
解密解压
archive unarchive -e private.pem myfiles.tar.xz extracted/
4. 验证压缩包
# 验证普通压缩包
archive check myfiles.tar.xz

# 验证加密压缩包
archive check -e private.pem myfiles.tar.xz

📖 详细用法

命令概览
archive <subcommand> [options] [arguments]
子命令
archive - 压缩文件
archive [flags] <输入文件/目录> <输出文件>

选项:

  • -e <公钥文件> - 使用指定公钥加密
  • -v - 显示处理文件路径

示例:

# 压缩目录
archive documents documents.tar.xz

# 加密压缩
archive -e public.pem -v sensitive_data encrypted_data.tar.xz
unarchive - 解压文件
unarchive [flags] <输入文件> <输出目录>

选项:

  • -e <私钥文件> - 使用指定私钥解密
  • -v - 显示处理文件路径

示例:

# 解压到指定目录
unarchive documents.tar.xz ./restored/

# 解密解压
unarchive -e private.pem -v encrypted_data.tar.xz ./decrypted/
gen - 生成密钥对
archive gen

生成 RSA 4096位 密钥对:

  • public.pem - 公钥
  • private.pem - 私钥
check - 验证压缩包
check [flags] <压缩包文件>

选项:

  • -e <私钥文件> - 验证加密压缩包时使用
  • -v - 显示详细信息
version - 显示版本
archive version

🔐 安全说明

加密机制
  1. 混合加密: 使用 RSA 加密 AES 密钥,AES 加密实际数据
  2. RSA 4096位: 提供强大的非对称加密保护
  3. AES 256位 CBC: 高效的对称加密,确保数据安全
  4. 随机密钥: 每次加密都生成新的 AES 密钥
最佳实践
  • ✅ 定期备份私钥文件
  • ✅ 将私钥存储在安全位置
  • ✅ 使用强密码保护私钥文件
  • ✅ 验证压缩包完整性
  • ❌ 不要在不安全的渠道传输私钥
  • ❌ 不要将私钥提交到版本控制系统

🏗️ 项目结构

archive/
├── main.go              # 主程序入口
├── model/               # 压缩模型
│   ├── model.go         # 核心接口定义
│   ├── parse.go         # 版本解析
│   └── a1/              # A1 版本实现
├── utils/               # 工具函数
│   ├── tar.xz.go        # tar.xz 处理
│   ├── encrypt.go       # 加密工具
│   ├── aes/             # AES 加密
│   └── rsa/             # RSA 加密
└── bin/                 # 编译输出

🤝 贡献

欢迎提交 Issue 和 Pull Request!

  1. Fork 本项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

🙏 致谢


如果这个项目对你有帮助,请给个 ⭐️ 支持一下!

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
a1
aes
rsa

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL