Public Key Cryptography: Under the Hood