I have a PGP public key of B. Now A wants to send an encrypted message to B using his PGP Public key by using PGP method. How can I do this with OpenSSL?


I have seen wiki page for PGP method where a random key is used to encrypt the message and that random key is again encrypted with senders PGP Public key and then receiver will decrypt the encrypted key using his private key and then that decrypted key is used to decrypt the message. But i am not able to do that process in openssl.

It can be done in gpg, but i want to know how can it be done in OpenSSL?

  • The nonce (symmetric) key is publickey-encrypted with the receiver's publickey, not the sender's. As correctly shown in the wikipedia figure you linked on one answer. The sender must have previously obtained, and validated, a copy of the receiver's key. This is fundamental to the design of en.wikipedia.org/wiki/Public-key_cryptography . – dave_thompson_085 Apr 8 '20 at 10:40

OpenPGP is a protocol not implemented by OpenSSL, including a derivated mode of symmetric encryption. While you could use OpenSSL for the actual cryptographic algorithms, for implementing OpenPGP with OpenSSL commands, you'd have to:

Don't write your own crypto code (this is not an actually small project here), rely on available libraries instead. There's GnuPG which can be interfaced with GPGME, and a bunch of GPGME interfaces and native libraries for pretty much all (more or less) important programming language.


No, it cannot. While OpenSSL implements most of the same cryptographic algorithms, it can neither understand nor generate the OpenPGP packet format.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.