Wyliczanie dużych liczb

0

Witam,
zrobiłem taki kod ale nie mam już pojecia dlaczego nie działa jak należy, podaje w nim stałą e i on ma wyliczyć mi zmienna d. To jest mi potrzebne do szyfrowania RSA. Poza tym wszystko działa. Gdy podam sztywno e i d to szyfruje i odszyfrowuje. A jak podam tylko e to stoi w miejscu, losuje mi duże liczby ujemne. Wynik powinien wyjść d= 230701, p,q mam stałe p=659, q=571. Będę wdzieczny za wszelką pomoc :)

 class Program
    {
        static void Main(string[] args)
        {
            klucz_d zm_d = new klucz_d();
            

            int e = 118801;
            int d = zm_d.licz_klucz_d(e);
            Console.WriteLine("\nZmienna d: " + d);
        }
    }
public class klucz_d
    {
        klucz_e e = new klucz_e();  //potrzebne do pobrania e.liczba_p_q() z innej klasy
        public int licz_klucz_d(int klucz_e)
        {
            int e1 = klucz_e;
            int[] zmienna_d = new int[1];
            for (int x = 0; ; x++)
            {
                int licz = x * e1;
                int licz1 = licz % e.liczba_p_q();
                if (licz == 1)
                {
                    zmienna_d[0] = x;
                    break;
                }
            }
            return zmienna_d[0];
        }
    }
0

możesz jeszcze wkleić tę metodę: liczba_p_q() ?

dlaczego zmienna_d jest zadeklarowana jako 1 elementowa tablica?

0

Skorzystaj z gotowych bibliotek do bignumów, a nie rób swoich implementacji, które będą niesprawne, powolne i nawet nie będą obsługiwały bignumów.

0

w zasadzie nie wiem po co tablica, ale zmienna zwykła też nic nie zmienia

 class klucz_e
    {
        int p = 659;
        int q = 571;
        public int liczba_p_q()
        {
            int liczba = (p - 1) * (q - 1);
            return liczba;
        }
     }

bignum? Czyli co to jest?

1 użytkowników online, w tym zalogowanych: 0, gości: 1