Bash
生成非常大文件的二維碼?
我想生成我的 4096 位裝甲GPG私鑰的二維碼。關鍵是這麼大,程序似乎因為它的大小而失敗。
qrencode
$ gpg --export-secret-keys --armor > ~/private.key $ ./qrencode -o test.png < ~/private.key
結果:
無法對輸入數據進行編碼:數值結果超出範圍
我怎樣才能做到這一點?是否有可以處理非常大的 GPG 密鑰的 qrencode 替代程序?我想按照這個security.SE問題的建議將它列印在紙上。
@geruetzel 和 @cuonglm 的評論正在解決我的問題的這個版本。
您的錯誤消息已經提示您出了什麼問題!
您的單線將實際文件內容作為文件名提供給 qrencode 程序。因此出現錯誤消息。
試試
qrencode -o test.png -t png < private.key
。你應該看看 shell 輸入輸出重定向。例如,I/O 重定向。
我看到您也找到了訪問 qrencode 開發人員 GitHub 儲存庫的方法 :) 有一個解釋為什麼 4096 位密鑰不能編碼為 QR 碼:
qrencode 將您的私有 GPG 密鑰編碼為 8 位 (binary|utf-8),因為該密鑰不是純字母數字。它包含特殊字元。字母數字模式僅支持那些特殊字元 .(%*+-./:)。所以最大 GPG 密鑰只能是 2953 個字元長。
無法將密鑰編碼為單個 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
如果沒有錯誤消息,則密鑰文件已正確重建。