GPG를 사용하여 파일을 만들고 대칭적으로 암호화했습니다.
touch test.txt && echo 'test' >> test.txt
gpg --output test.txt --symmetric test.txt
하지만 지금은 그것을 해독하는 방법을 모르고 놀랍게도 온라인에서 예제를 찾을 수 없습니다. 내가 시도한 것은 다음과 같습니다.
$ gpg --decrypt test.txt
gpg: AES encrypted data
gpg: encrypted with 1 passphrase
$ gpg --symmetric --decrypt test.txt
gpg: conflicting commands
$ gpg --passphrase --decrypt test.txt
gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: Unknown system error
$ gpg --decrypt --output test_decrypted.txt test.txt
gpg: no valid OpenPGP data found.
gpg: decrypt_message failed: Unknown system error
내가 뭘 잘못했나요?
답변1
올바른 명령은
gpg --decrypt test.txt
그러나 gpg
입력을 읽기 전에 출력을 덮어쓰므로 test.txt
원본 콘텐츠가 손실됩니다.
다른 파일로 암호화해야 합니다.
gpg --output test.gpg --symmetric test.txt
답변2
사용법은 --symmetric
혼란스러울 정도로 비대칭인 것 같습니다.
- 암호화를 위해 사용해야
--symmetric
하지만, - 해독을 위해
--decrypt
.
또한 결과를 다른 파일로 출력합니다.
완전히 재현 가능한 예(일괄 처리 모드를 사용하고 아무 메시지도 표시하지 않음):
#!/bin/bash
echo "Some important content" > a.txt
[ -f a.txt.gpg ] && rm a.txt.gpg
[ -f b.txt ] && rm b.txt
echo "secret" | gpg --batch --passphrase-fd 0 --output a.txt.gpg --symmetric a.txt
echo "secret" | gpg --batch --passphrase-fd 0 --output b.txt --decrypt a.txt.gpg
echo "------------------------- a.txt"
cat a.txt
echo "------------------------- b.txt"
cat b.txt
diff a.txt b.txt && echo "Files have the same content"