In part two we went over the differences between block / stream ciphers and their modes of operation. We also discussed modular arithmetic and the basics of the data encryption standard (DES). This part is going to go over a basic introduction of elliptic curve crypto systems and the OpenSSL cryptography library. To start, let’s go over what elliptic curves are (this is just a tl;dr version; elliptic curve crypto is too complicated to go over in just a single blog post). While Wolfram Mathworld gives a complete definition of elliptic curves here, we are going to define elliptic curves with this equation: *y ^{2}= x^{3}+ax+b mod p *where 4a

^{3}+27b

^{2 }?

*0 mod p*(if you do not understand what

*mod p*means, read the previous part in this series). This is called the

*Weierstrass*

*normal form*for elliptic curves. The values

*a*and

*b*determine the shape of the curve.

Why are elliptic curves so important to cryptography? One of the most important pieces of elliptic curves in relation to crypto is the discrete logarithm problem. The discrete logarithm is sometimes known as a “one-way function”. This means that given a function *f(x)*, but given *y *it is