我想生成我的 4096 位装甲GPG私钥的二维码。关键是如此之大,程序似乎因为它的大小而失败。qrencode
$ gpg --export-secret-keys --armor > ~/private.key
$ ./qrencode -o test.png < ~/private.key
Run Code Online (Sandbox Code Playgroud)
结果:
无法对输入数据进行编码:数值结果超出范围
我怎样才能做到这一点?是否有可以处理非常大的 GPG 密钥的 qrencode 替代程序?我想按照这个 security.SE 问题的建议将其打印在纸上。
@geruetzel 和 @cuonglm 的评论正在解决我的问题的这个版本。
小智 8
您的错误消息已经暗示出了什么问题!
您的单行程序将实际文件内容作为文件名提供给 qrencode 程序。因此出现错误消息。
试试qrencode -o test.png -t png < private.key
。
您应该看看 shell 输入输出重定向。例如,I/O 重定向。
我看到你也找到了 qrencode 的开发人员 GitHub 存储库的方法:) 有一个解释为什么 4096 位密钥不能编码为 QR 码:
qrencode 将您的私人 GPG 密钥编码为 8 位(二进制|utf-8),因为密钥不是纯字母数字。它包含特殊字符。字母数字模式只支持那些特殊字符 .(%*+-./:)。所以最大的 GPG 密钥只能是 2953 个字符长。
来自https://github.com/fukuchi/libqrencode/issues/31
小智 8
密钥无法编码为单个二维码。但是两个(或更多)可以工作。
导出您的密钥(和以前一样):
gpg --export-secret-keys --armor > private.key
Run Code Online (Sandbox Code Playgroud)生成最大大小为 2500 字节的文件:
split -C 2500 private.key splitkey-
Run Code Online (Sandbox Code Playgroud)将每个转换为一个 QR 文件(同名带扩展名.qr
)
for file in splitkey-??; do
<"$file" qrencode -s 3 -d 150 -o "$file".qr
done
Run Code Online (Sandbox Code Playgroud)当需要恢复密钥时。您可以扫描每个二维码,每个二维码都会产生一个字符串。只需按文件名顺序连接每个字符串。让我们假设结果键存储在文件中newkey
。
您可以测试密钥的内部 CRC-24 是否检查出来。
gpg --dearmor newkey >/dev/null
Run Code Online (Sandbox Code Playgroud)
如果没有错误信息,则密钥文件已正确重建。
归档时间: |
|
查看次数: |
8343 次 |
最近记录: |