age

age

简洁高效的跨平台文件加密解决方案

age是一款简单高效的文件加密工具和格式。它采用小型显式密钥设计,无需配置,支持UNIX风格组合使用。age提供多接收者加密、密码保护和SSH密钥兼容等功能,适用于多种操作系统平台。该项目由Benjojo12和FiloSottile设计开发,完整规范可在age-encryption.org查阅。作为开源项目,age为用户提供了一种现代化、安全可靠的文件加密方案。

age文件加密GoSSH密钥安全Github开源项目
<p align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/FiloSottile/age/blob/main/logo/logo_white.svg"> <source media="(prefers-color-scheme: light)" srcset="https://yellow-cdn.veclightyear.com/835a84d5/281910be-b807-47cb-9f4e-238f60b07c71.svg"> <img alt="age标志,罗马圣彼得大教堂的线框图,文字: age,文件加密" width="600" src="https://yellow-cdn.veclightyear.com/835a84d5/281910be-b807-47cb-9f4e-238f60b07c71.svg"> </picture> </p>

Go参考 man页面 C2SP规范

age是一个简单、现代且安全的文件加密工具、格式和Go库。

它具有小巧明确的密钥、无配置选项以及UNIX风格的可组合性。

$ age-keygen -o key.txt
公钥: age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p
$ tar cvz ~/data | age -r age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p > data.tar.gz.age
$ age --decrypt -i key.txt data.tar.gz.age > data.tar.gz

📜 格式规范在age-encryption.org/v1。age由@Benjojo12@FiloSottile设计。

📬 通过订阅维护者通讯关注本项目的维护情况!

🦀 在github.com/str4d/rage可获得一个可互操作的Rust替代实现。

🔑 通过age-plugin-yubikey插件支持YubiKey等硬件PIV令牌。

✨ 更多插件、实现、工具和集成,请查看awesome age列表。

💬 作者发音为[aɡe̞]硬音g,如同GIF,始终使用小写字母拼写。

安装

<table> <tr> <td>Homebrew (macOS或Linux)</td> <td> <code>brew install age</code> </td> </tr> <tr> <td>MacPorts</td> <td> <code>port install age</code> </td> </tr> <tr> <td>Alpine Linux v3.15+</td> <td> <code>apk add age</code> </td> </tr> <tr> <td>Arch Linux</td> <td> <code>pacman -S age</code> </td> </tr> <tr> <td>Debian 12+ (Bookworm)</td> <td> <code>apt install age</code> </td> </tr> <tr> <td>Debian 11 (Bullseye)</td> <td> <code>apt install age/bullseye-backports</code> (<a href="https://backports.debian.org/Instructions/#index2h2">启用backports</a>以获取age v1.0.0+) </td> </tr> <tr> <td>Fedora 33+</td> <td> <code>dnf install age</code> </td> </tr> <tr> <td>Gentoo Linux</td> <td> <code>emerge app-crypt/age</code> </td> </tr> <tr> <td>NixOS / Nix</td> <td> <code>nix-env -i age</code> </td> </tr> <tr> <td>openSUSE Tumbleweed</td> <td> <code>zypper install age</code> </td> </tr> <tr> <td>Ubuntu 22.04+</td> <td> <code>apt install age</code> </td> </tr> <tr> <td>Void Linux</td> <td> <code>xbps-install age</code> </td> </tr> <tr> <td>FreeBSD</td> <td> <code>pkg install age</code> (security/age) </td> </tr> <tr> <td>OpenBSD 6.7+</td> <td> <code>pkg_add age</code> (security/age) </td> </tr> <tr> <td>Chocolatey (Windows)</td> <td> <code>choco install age.portable</code> </td> </tr> <tr> <td>Scoop (Windows)</td> <td> <code>scoop bucket add extras && scoop install age</code> </td> </tr> <tr> <td>pkgx</td> <td> <code>pkgx install age</code> </td> </tr> </table>

在Windows、Linux、macOS和FreeBSD上,你可以使用预编译的二进制文件。

https://dl.filippo.io/age/latest?for=linux/amd64
https://dl.filippo.io/age/v1.1.1?for=darwin/arm64
...

如果你的系统有支持的Go版本,你可以从源代码构建。

go install filippo.io/age/cmd/...@latest

欢迎新的打包者提供帮助。

验证发布签名

如果你下载预编译的二进制文件,你可以检查它们的Sigsum证明,这类似于带有额外透明度的签名:你可以加密验证每个证明都记录在公共的仅追加日志中,所以你可以让age项目对我们发布的每个二进制文件负责。这与Go校验和数据库提供的类似。

cat << EOF > age-sigsum-key.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEjDYFJ4WVbxRLcgbppmPaMFS/Wbq+1r9cl4qdJTyRVL
EOF
cat << EOF > sigsum-trust-policy.txt
log 154f49976b59ff09a123675f58cb3e346e0455753c3c3b15d465dcb4f6512b0b https://poc.sigsum.org/jellyfish
witness poc.sigsum.org/nisse 1c25f8a44c635457e2e391d1efbca7d4c2951a0aef06225a881e46b98962ac6c
witness rgdd.se/poc-witness  28c92a5a3a054d317c86fc2eeb6a7ab2054d6217100d0be67ded5b74323c5806
group  demo-quorum-rule all poc.sigsum.org/nisse rgdd.se/poc-witness
quorum demo-quorum-rule
EOF

curl -JO "https://dl.filippo.io/age/v1.2.0?for=darwin/arm64"
curl -JO "https://dl.filippo.io/age/v1.2.0?for=darwin/arm64&proof"

go install sigsum.org/sigsum-go/cmd/sigsum-verify@v0.6.2
sigsum-verify -k age-sigsum-key.pub -p sigsum-trust-policy.txt \
    age-v1.2.0-darwin-arm64.tar.gz.proof < age-v1.2.0-darwin-arm64.tar.gz

你可以在Sigsum文档中了解更多关于上述内容的信息。

使用方法

完整文档请阅读age(1) man页面

用法:
    age [--encrypt] (-r 接收者 | -R 路径)... [--armor] [-o 输出] [输入]
    age [--encrypt] --passphrase [--armor] [-o 输出] [输入]
    age --decrypt [-i 路径]... [-o 输出] [输入]

选项: -e, --encrypt 将输入加密到输出。如果省略则为默认选项。 -d, --decrypt 将输入解密到输出。 -o, --output OUTPUT 将结果写入路径为OUTPUT的文件。 -a, --armor 加密为PEM编码格式。 -p, --passphrase 使用密码进行加密。 -r, --recipient RECIPIENT 加密到指定的RECIPIENT。可重复使用。 -R, --recipients-file PATH 加密到PATH列出的收件人。可重复使用。 -i, --identity PATH 使用PATH处的身份文件。可重复使用。

INPUT默认为标准输入,OUTPUT默认为标准输出。 如果OUTPUT已存在,将被覆盖。

RECIPIENT可以是由age-keygen生成的age公钥("age1...") 或SSH公钥("ssh-ed25519 AAAA...","ssh-rsa AAAA...")。

收件人文件包含一个或多个收件人,每行一个。空行 和以"#"开头的行被忽略作为注释。可使用"-"从标准输入 读取收件人。

身份文件包含一个或多个密钥("AGE-SECRET-KEY-1..."), 每行一个,或一个SSH密钥。空行和以"#"开头的行被 忽略作为注释。可以使用密码加密的age文件作为 身份文件。可以提供多个密钥文件,未使用的将被 忽略。可使用"-"从标准输入读取身份。

当明确指定--encrypt时,-i也可用于对身份文件进行 对称加密,可替代或补充正常的收件人。

多个收件人

文件可以通过重复使用-r/--recipient来加密给多个收件人。每个收件人都能解密该文件。

$ age -o example.jpg.age -r age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p \
    -r age1lggyhqrw2nlhcxprm67z43rta597azn8gknawjehu9d9dl0jq3yqqvfafg example.jpg

收件人文件

多个收件人也可以在一个或多个文件中每行列出一个,通过-R/--recipients-file标志传递。

$ cat recipients.txt
# Alice
age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p
# Bob
age1lggyhqrw2nlhcxprm67z43rta597azn8gknawjehu9d9dl0jq3yqqvfafg
$ age -R recipients.txt example.jpg > example.jpg.age

如果-R(或-i)的参数是-,则从标准输入读取文件。

密码

可以使用-p/--passphrase用密码加密文件。默认情况下,age会自动生成一个安全的密码。在解密时会自动检测密码保护的文件。

$ age -p secrets.txt > secrets.txt.age
输入密码(留空以自动生成安全密码):
使用自动生成的密码"release-response-step-brand-wrap-ankle-pair-unusual-sword-train"。
$ age -d secrets.txt.age > secrets.txt
输入密码:

密码保护的密钥文件

如果传递给-i的身份文件是密码加密的age文件,它将被自动解密。

$ age-keygen | age -p > key.age
公钥:age1yhm4gctwfmrpz87tdslm550wrx6m79y9f2hdzt0lndjnehwj0ukqrjpyx5
输入密码(留空以自动生成安全密码):
使用自动生成的密码"hip-roast-boring-snake-mention-east-wasp-honey-input-actress"。
$ age -r age1yhm4gctwfmrpz87tdslm550wrx6m79y9f2hdzt0lndjnehwj0ukqrjpyx5 secrets.txt > secrets.txt.age
$ age -d -i key.age secrets.txt.age > secrets.txt
输入身份文件"key.age"的密码:

对于大多数用例,密码保护的身份文件并不必要,因为访问加密的身份文件意味着可以访问整个系统。但是,如果身份文件存储在远程,它们可能会有用。

SSH密钥

作为一个便利功能,age还支持加密到ssh-rsa和ssh-ed25519 SSH公钥,并使用相应的私钥文件解密。(不支持ssh-agent。)

$ age -R ~/.ssh/id_ed25519.pub example.jpg > example.jpg.age
$ age -d -i ~/.ssh/id_ed25519 example.jpg.age > example.jpg

请注意,SSH密钥支持使用更复杂的加密技术,并在加密文件中嵌入公钥标签,使得可以跟踪加密到特定公钥的文件。

加密到GitHub用户

结合SSH密钥支持和-R,您可以轻松地将文件加密到GitHub个人资料上列出的SSH密钥。

$ curl https://github.com/benjojo.keys | age -R - example.jpg > example.jpg.age

请记住,人们可能不会长期保护SSH密钥,因为当仅用于身份验证时它们是可撤销的,而且存储在YubiKey上的SSH密钥无法用于解密文件。

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多