The most well known for public private key encryption is OpenSSL. You can download it here.
OpenSSL is a software library for applications that secure communications over computer networks against eavesdropping or need to identify the party at the other end. It is widely used by Internet servers, including the majority of HTTPS websites.
Generate a public and private RSA key pair
# openssl genrsa -aes256 -out private.key 2048
# openssl rsa -in private.key -pubout -out public.key
Encrypt
# openssl rsautl -encrypt -pubin -inkey public.key -in plaintext.txt -out encrypted.txt
Decrypt
# openssl rsautl -decrypt -inkey private.key -in encrypted.txt -out plaintext.txt
I have tested this tutorial myself (on a mac, but the tooling is a direct port) and it worked. Here is the output to verify: