示例#1
0
        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));
        }
示例#2
0
        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);
        }