public List <EIGamalMessage> Encrypt(byte [] message, EIGamalPublicKey public_key, RandomNumberGenerator random) { List <BigInteger> messages = null; //TODO convert byte [] to from group return(Encrypt(messages, public_key, random)); }
private List <EIGamalMessage> Encrypt(List <BigInteger> messages, EIGamalPublicKey public_key, RandomNumberGenerator random) { //Encryption List <EIGamalMessage> messages_encrypted = new List <EIGamalMessage>(); foreach (BigInteger message in messages) { BigInteger y = random.RandomPositiveBigIntegerBelow(public_key.Q); // ephemeral key a unique one for every message BigInteger s = public_key.H.Pow(y); //Shared secret messages_encrypted.Add(new EIGamalMessage(public_key.G.Pow(y), message * s)); } return(messages_encrypted); }