Esempio n. 1
0
        public void ElGamalLongMessageEncryption()
        {
            var elgamal = new SimpleElGamal(12, 17, 3, 74);
            var message = new List <uint> {
                13, 7, 22, 43, 56, 64, 8, 1, 12
            };
            var expected = new List <uint>();

            foreach (var value in message)
            {
                expected.Add(NumericUtilities.SolveModulo(value * elgamal.Key, 1, elgamal.Modulo));
            }
            var encrypted = elgamal.Encrypt(message);

            Assert.IsTrue(expected.SequenceEqual(encrypted));
            Assert.IsTrue(message.SequenceEqual(elgamal.Decrypt(encrypted)));
        }
Esempio n. 2
0
        public void RSALongMessageEncryption()
        {
            var rsa = new SimpleRSA(3, 11);

            Assert.AreEqual(rsa.Modulo, 33u);
            Assert.AreEqual(rsa.PublicKey, 3u);
            Assert.AreEqual(rsa.PrivateKey, 7u);
            var message = new List <uint> {
                1, 5, 31, 14, 8
            };
            var expected = new List <uint>();

            foreach (var value in message)
            {
                expected.Add(NumericUtilities.SolveModulo(value, rsa.PublicKey, rsa.Modulo));
            }
            var encrypted = rsa.Encrypt(message);

            Assert.IsTrue(expected.SequenceEqual(encrypted));
            Assert.IsTrue(message.SequenceEqual(rsa.Decrypt(encrypted)));
        }
 public void SolveModulo()
 {
     Assert.AreEqual(NumericUtilities.SolveModulo(2, 4, 5), 1u);
     Assert.AreEqual(NumericUtilities.SolveModulo(142, 41, 96), 64u);
     Assert.AreEqual(NumericUtilities.SolveModulo(2, 128, 41), 10u);
 }