Public Key Cryptography: Diffie-Hellman and Elgamal Encryption Schemes