从 文件加密小工具继续讨论
之前为了实现openlist encrypt驱动文件本地加密-官方工具上传-服务器查看的路径,使用Python做了一个小工具,支持GUI操作,但加解密操作依赖openlist可执行程序,整体不够优雅。
最近了解到rust性能非常优秀,尝试使用rust实现,折腾半天之后,交叉加解密始终无法通过,原因是rust使用的加密库和go有差异。
最近使用go语言重做了该项目,简单测试基本通过,现在分享给大家。工具的特点如下:
- 使用后端GO实现, Wails 框架实现GUI,依赖WebView
- 不依赖rclone,openlist等加解密可执行程序
- 加解密和openlist完全兼容
- 密钥、盐值的混淆还原操作完全兼容
https://wormhole.app/52PjR0#GmPm_gHw8VBHlM4XjGv1AA
easy-crypt-go/
├── main.go # 入口:GUI/CLI 双模式
├── app.go # Wails GUI 后端(15 个暴露方法)
├── wails.json # Wails 项目配置
├── go.mod / go.sum # Go 模块定义
├── .gitignore # 构建产物忽略规则
├── README.md # 项目说明
├── frontend/
│ ├── index.html # GUI 界面(中文)
│ ├── style.css # 深色主题样式
│ ├── main.js # 前端交互逻辑
│ └── wailsjs/ # Wails 自动生成的 JS/TS 绑定
├── internal/
│ ├── cli/cli.go # CLI 命令(encrypt/decrypt/obscure/reveal/config)
│ ├── crypto/
│ │ ├── obscure.go # 密码混淆(AES-256-CTR,rclone 兼容)
│ │ ├── key_derivation.go # 密钥派生(scrypt N=16384)
│ │ ├── file_cipher.go # 文件内容加密(NaCl SecretBox)
│ │ ├── filename_cipher.go # 文件名加密(EME / 旋转密码)
│ │ ├── dirname_cipher.go # 目录名加密
│ │ └── crypto_test.go # 23 个单元测试
│ ├── core/
│ │ ├── config.go # JSON 配置管理
│ │ ├── processor.go # 加密/解密处理引擎
│ │ ├── file_walker.go # 递归目录遍历
│ │ └── core_test.go # 7 个单元测试
│ └── utils/error.go # 公共错误类型
# 解压
tar xzf easy-crypt-go-src.tar.gz
cd easy-crypt-go
# 安装 Wails CLI
go install github.com/wailsapp/wails/v2/cmd/wails@latest
# 构建当前平台 GUI
wails build
# macOS Apple Silicon
wails build -platform darwin/arm64
1 个帖子 - 1 位参与者