コード例 #1
0
ファイル: Program.cs プロジェクト: dominpn/Diffie-Hellman
        static void Main(string[] args)
        {
            System.Random los = new Random(DateTime.Now.Millisecond);
            int           p, g;

            do
            {
                p = los.Next(5000, 10000);
                g = los.Next(5000, 10000);
            } while ((Czy_pierwsza(p) == false && Czy_pierwsza(g) == false));
            Uczestnik Alicja = new Uczestnik(p, g, los);
            Uczestnik Bob    = new Uczestnik(p, g, los);
            Uczestnik Ewa    = new Uczestnik(p, g, los);

            Alicja.oblicz_klucz_sesyjny(Bob.liczba_udostepniona);
            Bob.oblicz_klucz_sesyjny(Alicja.liczba_udostepniona);
            if (Alicja.get_klucz_sesyjny() == Bob.get_klucz_sesyjny())
            {
                Console.WriteLine("Normalna komunikacja");
                Console.WriteLine("Klucz sesyjny jest taki sam\n" + "Wartosc klucz sesyjnego Alicji wynosi: " + Alicja.get_klucz_sesyjny());
                Console.WriteLine("Wartosc klucz sesyjnego Boba wynosi: " + Bob.get_klucz_sesyjny());
            }
            else
            {
                Console.WriteLine("Klucze sesyjne sa rozne");
            }
            Atak_MITM(Alicja, Bob, Ewa);
            Console.ReadKey();
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: dominpn/Diffie-Hellman
 static void Atak_MITM(Uczestnik Alicja, Uczestnik Bob, Uczestnik Ewa)
 {
     // publiczne liczby p i q są przechwycone przez atakującego
     // atakujący - Ewa oblicza klucz sesyjny na podstawie udostępnionej liczby przez Alicję
     Ewa.oblicz_klucz_sesyjny(Alicja.liczba_udostepniona);
     //Alicja oblicza klucz sesyjny za pomocą liczby otrzymanej przez Ewę, która podszywa się pod Boba
     Alicja.oblicz_klucz_sesyjny(Ewa.liczba_udostepniona);
     //Bob otrzymuje liczbę udostępnioną od Ewy, którą uważa za liczbę Alicji
     Bob.oblicz_klucz_sesyjny(Ewa.liczba_udostepniona);
     //Ewa za pomocą liczby udostępnionej przez Boba, oblicza drugi klucz sesyjny
     Ewa.oblicz_klucz_sesyjny2(Bob.liczba_udostepniona);
     //Ewa jest w posiadaniu dwóch kluczy sesyjnych, który używa do komunikacji z Alicją i Bobem podszywając się pod jedną ze stron
     Console.WriteLine("\n\n\n\nKomunikacja z atakiem");
     Console.WriteLine("Wartosc klucz sesyjnego Alicji wynosi: " + Alicja.get_klucz_sesyjny() + " klucz sesyjny Ewy dla Alicji: " + Ewa.get_klucz_sesyjny());
     Console.WriteLine("Wartosc klucz sesyjnego Boba wynosi: " + Bob.get_klucz_sesyjny() + " klucz sesyjny Ewy dla Boba: " + Ewa.get_klucz_sesyjny2());
 }