生成非常大文件的二维码?

too*_*ley 8 bash gpg qr-code

我想生成我的 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

密钥无法编码为单个二维码。但是两个(或更多)可以工作。

当需要恢复密钥时。您可以扫描每个二维码,每个二维码都会产生一个字符串。只需按文件名顺序连接每个字符串。让我们假设结果键存储在文件中newkey

您可以测试密钥的内部 CRC-24 是否检查出来。

 gpg --dearmor newkey >/dev/null
Run Code Online (Sandbox Code Playgroud)

如果没有错误信息,则密钥文件已正确重建。