In 1976 Diffie and Hellman  described the framework for public-key cryptography. It was not until 1978 that three designs for public-key cryptosystems were published. Rivest, Shamir, and Adleman  showed how the discrete logarithm and factorization problems could be used to construct a public-key cryptosystem. This is the well-known RSA cryptosystem. Merkle and Hellman  used the knapsack problem in their construction. McEliece  built a system based on error correcting codes. Later in 1985 ElGamal  designed a public-key cryptosystem using the discrete logarithm problem. Koblitz  and Miller  suggested the use of elliptic curves in the design of public-key cryptosystems. Nowadays, there are quite a few more suggestions as to how to design public-key cryptosystems, but none so popular as the RSA and ElGamal cryptosystems.