发现 
命令行工具开发者工具
rage:age 格式文件加密工具
使用 age 格式的现代文件加密命令行工具,密钥简短、零配置,支持多收件人、口令与 SSH 密钥加密。
- 浏览
- 4
- 访问
- 0
- 下载
- 0
- 版本
- v0.12.1
- 平台
- Windows、macOS、Linux
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。
详细介绍
项目简介
rage 是 age 文件加密格式的 Rust 实现,是一个简单、现代且安全的文件加密工具。它采用小而易读的显式密钥,没有配置文件选项,并遵循 UNIX 风格的可组合性:默认从标准输入读取、向标准输出写入,可以自然接入管道。
age 格式的规范位于 age-encryption.org/v1,同名的 Go 参考实现为 filippo.io/age。rage 本身构建在 age 这个 Rust crate 之上,因此除了命令行工具,也可以作为 Rust 库使用。

主要功能
- 多收件人加密:重复使用
-r/--recipient,或通过-R/--recipients-file从文件读取收件人列表,每个收件人都能解密同一份文件。 - 口令加密:使用
-p/--passphrase以口令加密;留空时会自动生成一个易记的安全口令。若$PATH中存在pinentry,会优先用它询问口令,也可用PINENTRY_PROGRAM指定程序路径。 - SSH 密钥支持:可以直接用
ssh-ed25519、ssh-rsa公钥加密,并用对应私钥解密(默认启用sshfeature,不支持ssh-agent)。 - 受口令保护的密钥文件:
-i/--identity指向的 age 密钥文件如果是口令加密的,会自动解密后使用。 - YubiKey 等硬件令牌:通过 age-plugin-yubikey 插件支持 PIV 硬件令牌。
- PEM 编码输出:
-a/--armor可输出 PEM 文本格式,便于在文本渠道中传输。 - 可选挂载工具:启用
mountfeature 后可构建rage-mount,把 age 加密的 TAR / ZIP 归档以只读方式挂载(仅 Unix,依赖libfuse)。
安装与使用
安装
| 环境 | 命令 |
|---|---|
| Cargo(Rust 1.85+) | cargo install rage |
| Homebrew(macOS / Linux) | brew install rage |
| MacPorts | port install rage |
| Alpine Linux (edge) | apk add rage |
| Arch Linux | pacman -S rage-encryption |
| openSUSE Tumbleweed | zypper install rage-encryption |
| FreeBSD | pkg install rage-encryption |
| Scoop (Windows) | scoop bucket add main<br>scoop install main/rage |
Debian / Ubuntu 以及 Windows、Linux、macOS 也可以直接使用 预编译二进制。NixOS 用户可在配置中加入 environment.systemPackages = [ pkgs.rage ];,或运行 nix-env -i rage。
基本用法
Usage: rage [--encrypt] (-r RECIPIENT | -R PATH)... [-i IDENTITY] [-a] [-o OUTPUT] [INPUT]
rage [--encrypt] --passphrase [-a] [-o OUTPUT] [INPUT]
rage --decrypt [-i IDENTITY] [-o OUTPUT] [INPUT]
INPUT 默认为标准输入,OUTPUT 默认为标准输出。收件人可以是 rage-keygen 生成的 age 公钥(age1...),也可以是 SSH 公钥。
多收件人
$ rage -o example.png.age -r age1uvscypafkkxt6u2gkguxet62cenfmnpc0smzzlyun0lzszfatawq4kvf2u \
-r age1ex4ty8ppg02555at009uwu5vlk5686k3f23e7mac9z093uvzfp8sxr5jum example.png
也可以把收件人写在文件里,每行一个(忽略 # 开头的注释和空行):
$ cat recipients.txt
# Alice
age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p
# Bob
age1lggyhqrw2nlhcxprm67z43rta597azn8gknawjehu9d9dl0jq3yqqvfafg
$ rage -R recipients.txt example.jpg > example.jpg.age
-R 或 -i 的参数为 - 时,将从标准输入读取。
口令加密
$ rage -p -o example.png.age example.png
Type passphrase (leave empty to autogenerate a secure one): [hidden]
Using an autogenerated passphrase:
kiwi-general-undo-bubble-dwarf-dizzy-fame-side-sunset-sibling
$ rage -d example.png.age >example.png
Type passphrase: [hidden]
使用 SSH 密钥
$ rage -R ~/.ssh/id_ed25519.pub example.png > example.png.age
$ rage -d -i ~/.ssh/id_ed25519 example.png.age > example.png
注意事项
- SSH 密钥支持使用了更复杂的密码学构造,并在加密文件中嵌入公钥标签,因此可以追踪某文件是加密给哪把公钥的。
ssh-agent不受支持,解密需要直接提供私钥文件。rage-mount依赖libfuse,目前只能在 Unix 系统上使用,最低支持的 Rust 版本为 1.88。- 使用 Cargo 构建时可通过
--no-default-features与--features控制mount、ssh(默认启用)和unstable等 feature;unstable下的功能不保证稳定性与互操作性。 - 在 Rust 应用中使用时,应依赖
agecrate,rage 命令行工具构建于其上。 - 更多插件、实现与集成可参考 awesome age 列表。
本作品整理自 GitHub 开源项目 str4d/rage,原作者 @str4d,许可证 Apache-2.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。
更新记录
- v0.12.1当前版本
修复 armored 文件解析:包含空最后一行的文件现在会被正确拒绝;age 库的 ArmoredReader 恢复严格解析行为,异步 API 也修复了部分截断文件导致挂起的问题。
评论