개인키로 파일을 암호화하고, 공개키로 복호화하고 싶습니다. 공개 키는 내 애플리케이션에 포함됩니다. 그래서 파일을 생성했는지 확인하고 싶습니다. gpg 또는 openssl을 사용하여 어떻게 달성할 수 있습니까?
답변1
이를 수행하려면 OpenSSL을 사용하십시오. 간단한 예를 따르십시오.
파일을 암호화하려면:
openssl rsautl -encrypt -inkey public_key.pem -pubin -in <decrypted file> -out <encrypted file>
파일 암호 해독:
openssl rsautl -decrypt -inkey private_key.pem -in <encrypted file> -out <decrypted file>
답변2
개인 키로 암호화하고 공개 키로 해독할 수 있습니다.
- 암호화
$ TEXT="proof that private key can encrypt and public key can decrypt" $ echo "$TEXT" | openssl rsautl -sign -inkey private.key -in - -out - | base64 > encrypted.txt
- 암호 해독
$ cat encrypted.txt | base64 -d | openssl rsautl -verify -pubin -inkey public.key -in - proof that private key can encrypt and public key can decrypt
보시다시피, 해독된 파일은 암호화 단계에서 작성한 텍스트와 정확하게 일치합니다.
답변3
개인 키 소유자가 해당 파일을 제공했음을 보장하기 위해 개인 키를 사용하여 파일에 태그를 첨부하는 것을 호출합니다.징후, 라벨은 다음과 같이 호출됩니다.징후.
동일한 유형의 공개 키와 개인 키를 사용하여 단순화된(안전하지 않은) 알고리즘을 사용하는 인기 있는 암호화 시스템(교과서 RSA)이 있으며, 복호화는 서명과 동일하고 암호화는 확인과 동일합니다. 이는 일반적으로 그렇지 않습니다. RSA도 서로 다른 암호 해독 및 서명 메커니즘(각각 암호화 및 확인)을 사용하며, 다른 많은 알고리즘의 개인 키와 공개 키는 동일한 유형의 수학적 개체도 아닙니다.
그래서 당신은 문서에 서명하고 싶습니다. 사실상의 표준 도구는 다음과 같습니다.GnuPG.
키로 파일에 서명하려면 다음 안내를 따르세요.
gpg -s /path/to/file
키가 여러 개 있는 경우(예: 응용 프로그램 키와 개인 키) 이 --local-user
옵션을 사용하여 키를 선택하세요.
file.gpg
파일을 사용하려는 위치로 이동합니다 . 또한 공개 키(아마도 애플리케이션 패키지 내부)를 전송합니다. 원본 텍스트를 추출하고 서명을 확인하려면 다음을 실행하세요.
gpg file.gpg
더 편리한 경우에는 file
자체적으로 전송하여 분리된 서명이라는 별도의 서명 파일을 생성할 수 있습니다. 분리된 서명을 생성하려면:
gpg -b /path/to/file
확인하다:
gpg file.gpg file
이 옵션을 사용하여 파일을 암호화할 수도 있습니다 -e
. 물론 이는 수신자(옵션을 사용하여 지정됨 -r
)가 개인 키를 갖고 생산자가 공개 키를 갖는 별도의 키 쌍이 필요함을 의미합니다.
답변4
@rsmoorthy로서 문장이나 작은 파일을 암호화할 수 있으며 키보다 짧아야 합니다. 더 큰 파일을 암호화하려면 rsa 및 aes를 사용해야 합니다.
# Assuming you're using linux
$ cat /proc/sys/kernel/random/uuid | sed 's/-//g' | tee key.plain
$ openssl enc -nosalt -aes-256-cbc -in test.zip -out test.zip.enc -k $(cat key.plain)
# Assuming you have a pair of rsa keys (crypt.priv and crypt.pub)
$ openssl rsautl -sign -inkey crypt.priv -in key.plain -out key.enc
이제 "test.zip.enc", "crypt.pub" 및 "key.enc"를 사용하여 파일을 해독합니다.
$ openssl rsautl -verify -pubin -inkey crypt.pub -in key.enc -out key.de
$ openssl enc -nosalt -aes-256-cbc -d -in test.zip.enc -out de.zip -k $(cat key.de)