public void TestMethod1()
        {
            Elgamal          elgamal   = new Elgamal();
            NumberGenerator  ng        = new NumberGenerator();
            ElgamalDecryptor decryptor = new ElgamalDecryptor();

            int[] one = { 1 };

            elgamal.P = NumberConverter.IntToBits(547);
            elgamal.G = NumberConverter.IntToBits(9);
            elgamal.A = NumberConverter.IntToBits(23);
            elgamal.M = NumberConverter.IntToBits(100);
            elgamal.K = NumberConverter.IntToBits(125);

            elgamal.B = elgamal.GenerateB();

            Assert.AreEqual("81", NumberConverter.BitsArraystoString(elgamal.B).ToString());
            elgamal.Kprim = elgamal.GenerateKprim();
            Assert.AreEqual("83", NumberConverter.BitsArraystoString(elgamal.Kprim).ToString());
            elgamal.R = elgamal.GenerateR();
            Assert.AreEqual("304", NumberConverter.BitsArraystoString(elgamal.R).ToString());
            elgamal.S = ng.GetS(elgamal.Kprim, elgamal.M, elgamal.A, elgamal.R, MathOperations.BitsSubstraction(elgamal.P, one));
            Assert.AreEqual("172", NumberConverter.BitsArraystoString(elgamal.S).ToString());

            Assert.AreEqual("81", NumberConverter.BitsArraystoString(decryptor.GetX2(elgamal)).ToString());
            Assert.AreEqual("304", NumberConverter.BitsArraystoString(decryptor.GetBR(elgamal)).ToString());
            Assert.AreEqual("182", NumberConverter.BitsArraystoString(decryptor.GetRS(elgamal)).ToString());
            Assert.AreEqual("81", NumberConverter.BitsArraystoString(decryptor.GetX1(elgamal, decryptor.GetBR(elgamal), decryptor.GetRS(elgamal))).ToString());

            Assert.AreEqual(true, decryptor.IsCorrect(elgamal));
        }
 public void Substract()
 {
     Assert.AreEqual(2, NumberConverter.BitsToInt(MathOperations.BitsSubstraction(NumberConverter.IntToBits(32), NumberConverter.IntToBits(30))));
     Assert.AreEqual(20, NumberConverter.BitsToInt(MathOperations.BitsSubstraction(NumberConverter.IntToBits(84), NumberConverter.IntToBits(64))));
     Assert.AreEqual(200, NumberConverter.BitsToInt(MathOperations.BitsSubstraction(NumberConverter.IntToBits(876), NumberConverter.IntToBits(676))));
     Assert.AreEqual(123, NumberConverter.BitsToInt(MathOperations.BitsSubstraction(NumberConverter.IntToBits(723), NumberConverter.IntToBits(600))));
     Assert.AreEqual(8756, NumberConverter.BitsToInt(MathOperations.BitsSubstraction(NumberConverter.IntToBits(100000), NumberConverter.IntToBits(91244))));
 }
Exemplo n.º 3
0
        public void GeneratePublicKeys()
        {
            int[] one = { 1 };

            P = ng.GetP(1024);
            A = ng.GetRandomNumberSmallerThan(MathOperations.BitsSubstraction(P, one));
            G = ng.GetCoprimeInteger(P);
            B = GenerateB();
        }
Exemplo n.º 4
0
        public void GeneratePrivateKeys(int[] message)
        {
            int[] one = { 1 };

            M     = message;
            K     = ng.GetCoprimeInteger(P);
            R     = GenerateR();
            Kprim = GenerateKprim();
            S     = ng.GetS(Kprim, M, A, R, MathOperations.BitsSubstraction(P, one));
            ElgamalDecryptor dec = new ElgamalDecryptor();
        }
Exemplo n.º 5
0
        public int[] GenerateKprim()
        {
            int[] one = { 1 };

            return(MathOperations.InversePow(K, MathOperations.BitsSubstraction(P, one)));
        }