RSA and Public-Key Cryptography