Gerando código QR de um arquivo muito grande?

3

Eu quero gerar um código QR do meu encapsulamento de 4096 bits chave privada do GPG . A chave é tão grande que o programa qrencode parece falhar devido ao seu tamanho.

$ gpg --export-secret-keys --armor > ~/private.key
$ ./qrencode -o test.png < ~/private.key

Resultado:

Failed to encode the input data: Numerical result out of range

Como posso fazer isso acontecer? Existem programas alternativos ao qrencode que podem lidar com uma chave GPG muito grande? Quero imprimi-lo em papel como esta pergunta security.SE sugerida.

Os comentários de @geruetzel e @ cuonglm estão abordando esta versão da minha pergunta .

    
por toogley 30.04.2016 / 17:50

5 respostas

7

Sua mensagem de erro já dá uma dica sobre o que está errado!

Seu one-liner está fornecendo o conteúdo real do arquivo como nome de arquivo para o programa qrencode. Daí a mensagem de erro.

Experimente qrencode -o test.png -t png < private.key .

Você deve dar uma olhada no redirecionamento de entrada e saída do shell. Por exemplo, Redirecionamento de E / S .

Vejo que você também encontrou o caminho para o repositório GitHub do qrencode :) Há uma explicação por que uma chave de 4096 bits não pode ser codificada como um código QR:

qrencode is encoding your private GPG key as 8 bit (binary|utf-8), because the key is not pure alphanumeric. It contains special character. the alphanumeric mode only supports those special character .(%*+-./:). So the maximum GPG key can only be 2953 char long.


De link

    
por 30.04.2016 / 17:54
4

A chave não pode ser codificada como um único código QR. Mas dois (ou mais) poderiam funcionar.

  • Exportar sua chave (como antes):

    gpg --export-secret-keys --armor > private.key
    
  • Gere arquivos de um tamanho máximo de 2500 bytes:

    split -C 2500 private.key splitkey-
    
  • Converta cada um em um arquivo QR (mesmo nome com extensão .qr )

    for file in splitkey-??; do
        <"$file" qrencode -s 3 -d 150 -o "$file".qr
    done
    

Quando é necessário recuperar a chave. Você pode digitalizar cada código QR que cada um produzirá uma string. Apenas concatene cada string na sequência dos nomes dos arquivos. Vamos supor que a chave de resultado está armazenada no arquivo newkey .

E você pode testar se o CRC-24 interno da chave faz check-out.

 gpg --dearmor newkey >/dev/null

Se não houver mensagem de erro, o arquivo de chave foi reconstruído corretamente.

    
por 03.05.2016 / 14:13
3

Acabei de descobrir que isso não é possível.

% wc -c ~/private.key
6709 /home/toogley/private.key

( -c conta caracteres.)

para citar wikipedia :

caracteres máximos para caracteres alfanuméricos: 4.296.

    
por 30.04.2016 / 19:02
2

Sugiro que você minimize sua chave antes de codificá-la.

gpg --export --export-options export-minimal

Dependendo de como você usou sua chave no passado, ela pode salvar assinaturas de vinculação antigas.

    
por 22.07.2016 / 12:01
1

Você pode estar interessado em paperkey , que é projetado para pegar uma chave secreta de GPG e transformá-la em uma seqüência de bytes que podem ser impressos em papel. A chave secreta pode ser recuperada do texto depois de digitalizá-lo ou digitá-lo.

Há também uma discussão sobre várias formas de arquivar dados em papel que você pode achar interessantes.

    
por 01.05.2016 / 00:00

Tags