Example #1
0
 static public long[] FirstStepE(long[] C)
 {
     FirstNumberEncrypt = new long[C.Length];
     for (int i = 0; i < C.Length; i++)
     {
         FirstNumberEncrypt[i] = (long)(Shamir.reSquaring(C[i], E, P));//c=m^e(mod n)
     }
     return(FirstNumberEncrypt);
 }
Example #2
0
 static public long[] SecondStepD(long[] C)
 {
     SecondNumberEncrypt = new long[C.Length];
     for (long i = 0; i < C.Length; i++)
     {
         SecondNumberEncrypt[i] = (long)(Shamir.reSquaring(C[i], D, P));//c=m^e(mod n)
     }
     return(SecondNumberEncrypt);
 }
Example #3
0
 static public bool isNormalE(long e)
 {
     if (Shamir.GCD(e, P - 1) == 1)
     {
         E = e;
         return(true);
     }
     else
     {
         return(false);
     }
 }
Example #4
0
        static void Main(string[] args)
        {
            Console.WriteLine("=====================================================================================================================");
            A_Abonent.PrintLog($"Исходное сообщение: {text}", true);

            A_Abonent.PrintLog($"Введите Ea, что-бы НОД(Еа, {p - 1}) = 1", true);
            A_Abonent.SetP(p); //Передаем p абоненту А
            A_Abonent.SetE();  //Вводим Еа у абонента А
            A_Abonent.SetD();  //Формируем D абонента А


            B_Abonent.PrintLog($"Введите Eb, что-бы НОД(Еb, {p - 1}) = 1", true);
            B_Abonent.SetP(p); //Передаем p абоненту В
            B_Abonent.SetE();  //Вводим Еа у абонента В
            B_Abonent.SetD();  //Формируем D абонента В


            A_Abonent.PrintE(); //Выводим закрытый ключ абонента А
            B_Abonent.PrintE(); //Выводим закрытый ключ абонента В


            A_Abonent.TextToNumberEncrypt(text); //Текст в числовом представлении
            A_Abonent.PrintNumberEncrypt();      //Вывод текста  в числ. представлении


            long[] C1 = A_Abonent.FirstStepE(A_Abonent.GetNumberEncrypt());////////////////////////////////////////////////////////////////////////
            //C1 = new long[] { 1, 2, 3, 5 };
            A_Abonent.PrintLog("Текст в числовом представлении C1: " + Shamir.NumberEncryptToString(C1), true);
            A_Abonent.PrintLog("Текст в символьном представлении С1: " + Shamir.NumberEncryptToTextWithSpace(C1), true);

            long[] C2 = B_Abonent.FirstStepE(C1);
            B_Abonent.PrintLog("Текст в числовом представлении C2: " + Shamir.NumberEncryptToString(C2), true);
            B_Abonent.PrintLog("Текст в символьном представлении С2: " + Shamir.NumberEncryptToTextWithSpace(C2), true);

            long[] C3 = A_Abonent.SecondStepD(C2);
            A_Abonent.PrintLog("Текст в числовом представлении C3: " + Shamir.NumberEncryptToString(C3), true);
            A_Abonent.PrintLog("Текст в символьном представлении С3: " + Shamir.NumberEncryptToTextWithSpace(C3), true);

            long[] C4 = B_Abonent.SecondStepD(C3);
            B_Abonent.PrintLog("Текст в числовом представлении C4: " + Shamir.NumberEncryptToString(C4), true);
            B_Abonent.PrintLog("Текст в символьном представлении С4: " + Shamir.NumberEncryptToTextWithSpace(C4), true);

            B_Abonent.PrintLog($"Полученное сообщение: {Shamir.NumberEncryptToText(C4)}", true);
            Console.WriteLine("=====================================================================================================================");
        }
Example #5
0
 static public void TextToNumberEncrypt(string Text)
 {
     NumberEncrypt = Shamir.TextToNumberEncrypt(Text);
 }
Example #6
0
 static public void SetD()
 {
     Shamir.extendedGCD(E, P - 1, out long x, out long y, out long d);
     D = x + (P - 1);
     PrintLog($"D = {D}", true);
 }