How do I do public-key encryption with openssl?

OpenSSL is a public-key crypto library (plus some other random stuff). Here’s how to do the basics: key generation, encryption and decryption. We’ll use RSA keys, which means the relevant openssl commands are genrsa, rsa, and rsautl.

# Alice generates her private key `priv_key.pem`
openssl genrsa -out priv_key.pem 2048

# Alice extracts the public key `pub_key.pem` and sends it to Bob
openssl rsa -pubout -in priv_key.pem -out pub_key.pem

# Bob encrypts a message and sends `encrypted_with_pub_key` to Alice
openssl rsautl -encrypt -in cleartext -out encrypted_with_pub_key -inkey pub_key.pem -pubin

# Alice decrypts Bob's message
openssl rsautl -decrypt -in encrypted_with_pub_key -inkey priv_key.pem
Tagged .

Similar posts

More by Jim

Want to build a fantastic product using LLMs? I work at Granola where we're building the future IDE for knowledge work. Come and work with us! Read more or get in touch!

This page copyright James Fisher 2017. Content is not associated with my employer. Found an error? Edit this page.