대용량 파일에 대한 QR 코드를 생성하시나요?

대용량 파일에 대한 QR 코드를 생성하시나요?

나는QR 코드내 4096비트 갑옷GPG개인 키. 키가 너무 크고 qrencode크기 때문에 프로그램이 실패하는 것 같습니다.

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

결과:

입력 데이터를 인코딩할 수 없습니다. 숫자 결과가 범위를 벗어났습니다.

어떻게 해야 하나요? 매우 큰 GPG 키를 처리할 수 있는 qrencode의 대안이 있습니까? 종이에 인쇄하고 싶어요이 security.SE 질문제안.


@geruetzel 및 @cuonglm의 댓글이 해결되고 있습니다.내 문제의 이 버전.

답변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
    

키를 복구해야 하는 경우. 각 QR 코드를 스캔하면 각 QR 코드에 대한 문자열이 생성됩니다. 파일 이름 순서대로 각 문자열을 연결하면 됩니다. 결과 키가 파일에 저장되어 있다고 가정합니다 newkey.

키의 내부 CRC-24가 올바른지 테스트할 수 있습니다.

 gpg --dearmor newkey >/dev/null

오류 메시지가 없으면 키 파일이 올바르게 재구축된 것입니다.

답변2

오류 메시지는 이미 문제를 나타냅니다!

한 줄의 코드는 실제 파일 내용을 qrencode 프로그램에 파일 이름으로 제공합니다. 따라서 오류 메시지가 나타납니다.

노력하다 qrencode -o test.png -t png < private.key.

셸 입력 및 출력 리디렉션을 살펴봐야 합니다. 예를 들어,입력/출력 리디렉션.

qrencode의 개발자 GitHub 저장소에 대한 액세스도 찾았네요 :) 다음은 4096비트 키를 QR 코드로 인코딩할 수 없는 이유에 대한 설명입니다.

qrencode는 키가 순전히 영숫자가 아니기 때문에 개인 GPG 키를 8비트(바이너리 | utf-8)로 인코딩합니다. 특수 문자가 포함되어 있습니다. 영숫자 모드는 특수 문자 .(%*+-./:)만 지원합니다. 따라서 GPG 키의 최대 길이는 2953자까지만 가능합니다.


~에서https://github.com/fukuchi/libqrencode/issues/31

답변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 키를 가져와 종이에 인쇄할 수 있는 일련의 바이트로 변환하도록 설계되었습니다. 텍스트를 스캔하거나 입력하면 텍스트에서 키를 복구할 수 있습니다.

또 다른 논의는종이 데이터를 보관하는 다양한 방법흥미로울 수도 있습니다.

관련 정보