答案1
密钥无法编码为单个 QR 码。但两个(或更多)可以工作。
导出您的密钥(像以前一样):
gpg --export-secret-keys --armor > private.key
生成最大大小为 2500 字节的文件:
split -C 2500 private.key splitkey-
将每个文件转换为一个 QR 文件(同名,扩展名
.qr
)for file in splitkey-??; do <"$file" qrencode -s 3 -d 150 -o "$file".qr done
当需要恢复密钥时。您可以扫描每个二维码,每个二维码都会生成一个字符串。只需按文件名的顺序连接每个字符串即可。假设结果键存储在文件中newkey
。
您可以测试密钥的内部 CRC-24 是否正确。
gpg --dearmor newkey >/dev/null
如果没有错误消息,则密钥文件已正确重建。
答案2
您的错误消息已经提示出了问题!
您的一行代码将实际文件内容作为文件名提供给 qrencode 程序。因此出现错误消息。
尝试qrencode -o test.png -t png < private.key
。
您应该看一下 shell 输入输出重定向。例如,输入/输出重定向。
我发现您也找到了访问 qrencode 的开发者 GitHub 存储库的方法:) 这里有一个解释,说明为什么 4096 位密钥无法编码为 QR 码:
qrencode 将您的私人 GPG 密钥编码为 8 位(二进制|utf-8),因为该密钥不是纯字母数字。它包含特殊字符。字母数字模式仅支持特殊字符.(%*+-./:)。因此 GPG 密钥的最大长度只能是 2953 个字符。
答案3
如果您传递选项-Sv40
(40 是一个版本),qrencode
将自动为太大的输入创建多个图像。例如:
qrencode -o private.png -t png -Sv 40 < private.key
将输出private-01.png
、private-02.png
、 和private-03.png
。
答案4
您可能感兴趣纸钥匙,它的设计目的是获取 GPG 密钥,并将其转换为可以在纸上打印的字节序列。扫描或键入文本后,可以随后从文本中恢复密钥。
还有一个讨论是纸质数据存档的各种方式您可能会觉得有趣。