示例#1
0
 public TestKlucza(SzukajKlucza szukaj)
 {
     File fl = new File();
     kryptogram = fl.zwrocZawartoscB("zadanie2.txt");
     this.szukaj = szukaj;
     alfabet = new Alfabet();
     byte[] ff = System.Text.Encoding.ASCII.GetBytes(czescKlucza2);
 }
示例#2
0
        public TestKlucza(SzukajKlucza szukaj)
        {
            File fl = new File();

            kryptogram  = fl.zwrocZawartoscB("zadanie2.txt");
            this.szukaj = szukaj;
            alfabet     = new Alfabet();
            byte[] ff = System.Text.Encoding.ASCII.GetBytes(czescKlucza2);
        }
示例#3
0
        public void deszyfroj(String kryptogram, int ileKryptogramow)
        {
            List<List<int>> klucze = new List<List<int>>();
            ileK = ileKryptogramow + 1;
            File FileReader = new File();
            Alfabet alfabet = new Alfabet();
            int[][] kryptogramy = new int[ileK][];
            kryptogramy[0] = FileReader.zwrocZawartosc("zadanie1.txt");
            int maxDlugosc = kryptogramy[0].Length;
            //przepisanie zawarości plików do tablicy int
            for (int i = 1; i < ileK; i++)
            {
                string temp = "" + i + ".txt";
                kryptogramy[i] = FileReader.zwrocZawartosc(temp);
                if (maxDlugosc < kryptogramy[i].Length) maxDlugosc = kryptogramy[i].Length;
            }
            //przepisanie możliwych kluczy 8 bitowych
            int[] mozliweKlucze = alfabet.kombinacjeKlucza();
            //szukanie kluczy do każdych 8 bitów
            for (int i = 0; i < maxDlugosc; i++)
            {
                List<int> poprawneKlucze= new List<int>();
                foreach (int klucz in mozliweKlucze)
                {
                    bool znaleziono = true;
                    for (int j = 0; j < ileK; j++)
                    {
                        if (kryptogramy[j].Length <= i) continue;
                        int znak = (kryptogramy[j][i] ^ klucz);
                        if (!alfabet.lista_znakow.Contains(znak))
                        {
                            znaleziono = false;
                            break;
                        }

                    }
                    if (znaleziono)
                    {
                        poprawneKlucze.Add(klucz);
                    }
                }
                klucze.Add(poprawneKlucze);
            }

               for(int i=0;i<kryptogramy[0].Length;i++)
               {
                   List<int> kluczeTest=klucze[i];
                   string wynik=" |";
                   foreach(int kl in kluczeTest)
                   {
                       char znak= (char)(kl^kryptogramy[0][i]);
                           wynik+=znak+" | ";
                   }
                   Console.WriteLine(wynik);
               }
        }
示例#4
0
        public void deszyfroj(String kryptogram, int ileKryptogramow)
        {
            List <List <int> > klucze = new List <List <int> >();

            ileK = ileKryptogramow + 1;
            File    FileReader = new File();
            Alfabet alfabet    = new Alfabet();

            int[][] kryptogramy = new int[ileK][];
            kryptogramy[0] = FileReader.zwrocZawartosc("zadanie1.txt");
            int maxDlugosc = kryptogramy[0].Length;

            //przepisanie zawarości plików do tablicy int
            for (int i = 1; i < ileK; i++)
            {
                string temp = "" + i + ".txt";
                kryptogramy[i] = FileReader.zwrocZawartosc(temp);
                if (maxDlugosc < kryptogramy[i].Length)
                {
                    maxDlugosc = kryptogramy[i].Length;
                }
            }
            //przepisanie możliwych kluczy 8 bitowych
            int[] mozliweKlucze = alfabet.kombinacjeKlucza();
            //szukanie kluczy do każdych 8 bitów
            for (int i = 0; i < maxDlugosc; i++)
            {
                List <int> poprawneKlucze = new List <int>();
                foreach (int klucz in mozliweKlucze)
                {
                    bool znaleziono = true;
                    for (int j = 0; j < ileK; j++)
                    {
                        if (kryptogramy[j].Length <= i)
                        {
                            continue;
                        }
                        int znak = (kryptogramy[j][i] ^ klucz);
                        if (!alfabet.lista_znakow.Contains(znak))
                        {
                            znaleziono = false;
                            break;
                        }
                    }
                    if (znaleziono)
                    {
                        poprawneKlucze.Add(klucz);
                    }
                }
                klucze.Add(poprawneKlucze);
            }


            for (int i = 0; i < kryptogramy[0].Length; i++)
            {
                List <int> kluczeTest = klucze[i];
                string     wynik      = " |";
                foreach (int kl in kluczeTest)
                {
                    char znak = (char)(kl ^ kryptogramy[0][i]);
                    wynik += znak + " | ";
                }
                Console.WriteLine(wynik);
            }
        }