Added ElGamal encryption and over-hauled a lot of old code.