Пример #1
0
        public static UInt16 Decrypt(ElGamalKey key, KeyValuePair <ushort, ushort> decrypted)
        {
            var apx = (UInt16)PrimitiveUtilities.ModularPower(decrypted.Key, key.P - 1 - key.X, key.P);

            var bapx = (UInt16)((decrypted.Value * apx) % key.P);

            return(bapx);
        }
Пример #2
0
        public static KeyValuePair <UInt16, UInt16> EncryptKey(ElGamalKey key, UInt16 value)
        {
            Random random = new Random();

            var k = random.Next(1, key.P - 1);

            var a = (UInt16)PrimitiveUtilities.ModularPower(key.G, k, key.P);
            var b = (UInt16)PrimitiveUtilities.ModularPower(key.Y, k, key.P);

            var c = (b * value) % key.P;

            return(new KeyValuePair <ushort, ushort>(a, (UInt16)c));
        }