paper-age

paper-age

Age格式加密的纸质备份工具

PaperAge 是一款基于 Age 加密格式的开源纸质备份工具,专为安全存储小型秘密信息而设计。该工具可从文件或标准输入加密数据,生成含加密二维码的 PDF 文件,支持 A4 和信纸尺寸。PaperAge 通过优化二维码纠错级别和隐藏密码,确保在不受信任的打印环境下使用安全。主要应用于备份双因素认证恢复码等敏感数据,为需要离线存储方案的用户提供了简便而安全的选择。

PaperAge加密备份QR码Age格式PDF输出Github开源项目
<picture style="width: 76px; height: 96px" width="76" height="96"> <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/43314/216831744-e17e8282-669d-4716-b728-1ba31edda3f0.svg"> <source media="(prefers-color-scheme: light)" srcset="https://yellow-cdn.veclightyear.com/835a84d5/72e8f034-72dc-4d4a-890a-e7ba94497d54.svg"> <img style="width: 76px; height: 96px" width="76" height="96" alt="" src="https://yellow-cdn.veclightyear.com/835a84d5/72e8f034-72dc-4d4a-890a-e7ba94497d54.svg"> </picture>

PaperAge

使用Age格式(age-encryption.org/v1)轻松安全地备份(小型)机密信息到纸质文档。

Rust构建 codecov GitHub发布(最新语义化版本) Crates.io

特性

  • 接受来自文件或标准输入的输入
  • 使用密码对输入进行加密
  • 输出包含加密密文二维码的PDF文件
  • 支持A4和信纸尺寸
  • 优化二维码的纠错级别(较少数据→更高纠错能力)
  • 密码不会显示在PDF上,因此可以在不受信任的打印机上打印(例如在工作场所或图书馆)
  • 恢复备份时无需使用PaperAge:使用任何二维码扫描器和任何Age实现即可。

局限性

  • 由于二维码无法编码任意大小的有效载荷,最大输入大小约为1.9 KiB
  • 目前仅支持基于密码的加密

威胁模型和使用场景

  • 主要用于保存机密信息,如双因素认证恢复码
  • 手动添加密码允许使用公共打印机,例如图书馆、办公室、复印店等
  • 为了额外保护,可以记住密码或将其与打印件分开存储
  • 即使密码就在旁边,扫描和解密的需求也能防止简单的对手(普通窃贼不会关心你的Mastodon账户)
  • 如果需要防范国家级或其他高级威胁,请寻找其他解决方案

示例

这是输出PDF的样子(或者查看信纸版本)。二维码可以轻松使用iPhone(或任何现代智能手机)读取。

<a title="下载示例PDF(A4)" href="https://github.com/matiaskorhonen/paper-age/files/10675081/snakeoil.pdf"><img alt="A4纸张,标题为'PaperAge',包含二维码和PEM编码部分" width="420" height="594" src="https://yellow-cdn.veclightyear.com/835a84d5/21ab7e84-c079-476f-a38d-c9fbcdcb2ee1.svg"></a>

如果你想自己尝试解码,密码是snakeoil

安装

发布版本可用于macOS(Apple Silicon和Intel)、Linux(ARM和x86-64)和Windows(x86-64)。

虽然Windows版本应该可以在Windows 10和11上运行,但只有Windows 11是"官方"支持的。

Homebrew

添加PaperAge Tap以使用Homebrew安装最新版本:

brew tap matiaskorhonen/paper-age brew install paper-age

二进制文件

Releases页面下载最新版本,解压文件,并将paper-age二进制文件安装到PATH中的某个位置(例如/usr/local/bin)。

# 下载最新版本(选择你的操作系统) # macOS(Intel或Apple Silicon): curl -Lo paper-age.tar.gz https://github.com/matiaskorhonen/paper-age/releases/download/v1.3.3/paper-age-universal-apple-darwin.tar.gz # Linux(x86-64): curl -Lo paper-age.tar.gz https://github.com/matiaskorhonen/paper-age/releases/download/v1.3.3/paper-age-x86_64-unknown-linux-gnu.tar.gz # Linux(ARM): curl -Lo paper-age.tar.gz https://github.com/matiaskorhonen/paper-age/releases/download/v1.3.3/paper-age-aarch64-unknown-linux-gnu.tar.gz # 使用GitHub CLI工具验证工件证明(可选) gh attestation verify paper-age.tar.gz --repo matiaskorhonen/paper-age # 解压文件 tar -xf paper-age.tar.gz # 将二进制文件安装到/usr/local/bin sudo install paper-age /usr/local/bin/ # 或者:sudo mv paper-age /usr/local/bin/

Cargo

如果您已经安装了 Rust,可以使用 Cargo 安装 PaperAge:

cargo install paper-age

构件认证

从 v1.3.1 版本开始,PaperAge 发布版本具有构件认证。认证是使用 GitHub 的工具生成的。

使用方法

paper-age [选项] [输入]

参数

  • <输入> — 要读取的文件路径。默认为标准输入。最大约 1.9KB。

选项

  • -t, --title <标题> — 页面标题(最多 64 个字符)

    默认值:PaperAge

  • -n, --notes-label <备注标签> — 二维码下方的备注标签(最多 32 个字符)

    默认值:密码:

  • --skip-notes-line — 跳过备注占位行(例如 密码:________)

  • -o, --output <输出> — 输出文件名。使用 - 表示标准输出。

    默认值:out.pdf

  • -s, --page-size <页面大小> — 纸张大小 [默认:a4] [可选值:a4, letter]

  • -f, --force — 如果输出文件已存在,则覆盖

  • -g, --grid — 绘制网格样式以调试布局问题

  • --fonts-license — 打印嵌入字体的许可证

  • -v, --verbose... — 每次出现增加输出详细程度

  • -q, --quiet... — 每次出现减少输出详细程度

  • -h, --help — 打印帮助信息

  • -V, --version — 打印版本信息

备注/密码字段

二维码下方的备注字段可以通过 --notes-label <文本>--skip-notes-line 参数自定义。标签长度没有强制限制,但最终文本会超出页面边界。

示例

  • 打印提示占位符而不是密码:

    paper-age --notes-label="提示:"
  • 打印时间戳而不是备注字段:

    paper-age --notes-label="创建时间:$(date -Iseconds)" --skip-notes-line

压缩

PaperAge 完全不关心输入文件的类型。如果需要压缩更多数据,可以在将文件传递给 PaperAge 之前对其进行压缩,例如:

gzip --best --stdout in.txt | paper-age --output=compressed.pdf --title="in.txt.gz"

压缩比因输入数据而异,是否值得这样做取决于您。

扫描二维码

在 iOS 上,最好使用控制中心的"扫码"而不是相机应用。"扫码"可以将二维码内容复制到剪贴板,而不仅仅是搜索它。

在 Android 上,内置相机应用应该可以将二维码内容复制到剪贴板。Google 镜头应用似乎也可以正常工作。

开发

假设您已经安装了 Rust,从 git 本地运行最新版本:

  1. 拉取此仓库
  2. 运行测试:cargo test
  3. 获取帮助:cargo run -- -h
  4. 从标准输入加密:echo "Hello World" | cargo run -- --title="来自标准输入的秘密" --out="stdin.pdf"
  5. 以最大详细程度运行:echo "Hello World" | cargo run -- -vvvv

发布

当 git 中标记新版本时,会在 GitHub 上编译和发布。

使用 cargo release 标记和发布新版本,例如:

cargo release 1.2.3

⚠️ 在命令后附加 --execute 以实际执行发布。

许可证和致谢

PaperAge 根据 MIT 许可证发布。详情请参阅 LICENSE.txt。

包含 SIL 开放字体许可的 IBM Plex Mono 字体。请参阅 IBMPlexMono-LICENSE.txt。

使用来自 github.com/str4d/rage 的 Age 的 Rust 实现和 printpdf 库。

感谢 Ariel Salminen 提供 PaperAge 图标。

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

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

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
�潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多