跳到正文
发现
rage:age 格式文件加密工具
命令行工具开发者工具

rage:age 格式文件加密工具

使用 age 格式的现代文件加密命令行工具,密钥简短、零配置,支持多收件人、口令与 SSH 密钥加密。

admin
发布于 2026-10-28
浏览
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 公钥加密,并用对应私钥解密(默认启用 ssh feature,不支持 ssh-agent)。
  • 受口令保护的密钥文件:-i/--identity 指向的 age 密钥文件如果是口令加密的,会自动解密后使用。
  • YubiKey 等硬件令牌:通过 age-plugin-yubikey 插件支持 PIV 硬件令牌。
  • PEM 编码输出:-a/--armor 可输出 PEM 文本格式,便于在文本渠道中传输。
  • 可选挂载工具:启用 mount feature 后可构建 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 应用中使用时,应依赖 age crate,rage 命令行工具构建于其上。
  • 更多插件、实现与集成可参考 awesome age 列表。

本作品整理自 GitHub 开源项目 str4d/rage,原作者 @str4d,许可证 Apache-2.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v0.12.1当前版本

    修复 armored 文件解析:包含空最后一行的文件现在会被正确拒绝;age 库的 ArmoredReader 恢复严格解析行为,异步 API 也修复了部分截断文件导致挂起的问题。

评论