Advertisement
Guest User

Untitled

a guest
Apr 29th, 2023
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.26 KB | None | 0 0
  1. protected void szyfruj3_Click(object sender, EventArgs e)
  2.         {
  3.             //tabela szyfrująca
  4.             Regex validateNumberRegex = new Regex("^[a-z A-Z]+$");
  5.             if (!validateNumberRegex.IsMatch(tb_klucz3.Text))
  6.             {
  7.                 tb_wynik3.Text = "Podaj poprawny klucz, tylko litery alfabetu łacińskiego";
  8.             }
  9.             else
  10.             {
  11.                 string wiadomosc = tb_tekst3.Text;
  12.                 string klucz = tb_klucz3.Text;
  13.                 string wynik3 = "";
  14.                 int col = klucz.Length;
  15.                 int dl_wiadomosc = wiadomosc.Length;
  16.                 int row = wiadomosc.Length / col;
  17.                 if (wiadomosc.Length % col != 0)
  18.                     row += 1;
  19.                 var keyMap = new Dictionary<int, int>();
  20.  
  21.                 //permutacja
  22.                 for (int i = 0; i < col; i++)
  23.                 {
  24.                     keyMap.Add(i, klucz[i]);
  25.                 }
  26.  
  27.  
  28.                 char[,] tab = new char[row, col];
  29.                 for (int i = 0, k = 0; i < row; i++)
  30.                 {
  31.                     for (int j = 0; j < col;)
  32.                     {
  33.                         if (k >= wiadomosc.Length)
  34.                         {
  35.  
  36.                             tab[i, j] = ' ';
  37.                             j++;
  38.                         }
  39.  
  40.                         else if (wiadomosc[k] != ' ')
  41.                         {
  42.  
  43.                             tab[i, j] = wiadomosc[k];
  44.                             j++;
  45.                         }
  46.                         k++;
  47.                     }
  48.                 }
  49.  
  50.                 foreach (KeyValuePair<int, int> km in keyMap.OrderBy(key => key.Value))
  51.  
  52.                 {
  53.                     int j = km.Key;
  54.  
  55.  
  56.                     for (int i = 0; i < row; i++)
  57.                     {
  58.                         wynik3 += tab[i, j];
  59.                     }
  60.                 }
  61.  
  62.                 tb_wynik3.Text = wynik3.Replace(" ", ""); //usunięcie spacji między słowami
  63.             }
  64.         }
  65.  
  66.  
  67.  
  68.         protected void deszyfruj3_Click(object sender, EventArgs e)
  69.         {
  70.             //tabela szyfrująca
  71.             Regex validateNumberRegex = new Regex("^[a-z A-Z]+$");
  72.             if (!validateNumberRegex.IsMatch(tb_klucz3.Text))
  73.             {
  74.                 tb_wynik3.Text = "Podaj poprawny klucz, tylko litery alfabetu łacińskiego";
  75.             }
  76.             else
  77.             {
  78.                 string zaszyfrowanaWiadomosc = tb_tekst3.Text;
  79.                 string klucz = tb_klucz3.Text;
  80.                 string wynik3 = "";
  81.                 int col = klucz.Length;
  82.                 int dl_wiadomosc = zaszyfrowanaWiadomosc.Length;
  83.                 int row = zaszyfrowanaWiadomosc.Length / col;
  84.                 if (zaszyfrowanaWiadomosc.Length % col != 0)
  85.                     row += 1;
  86.                 var keyMap = new Dictionary<int, int>();
  87.  
  88.                 //permutacja
  89.                 for (int i = 0; i < col; i++)
  90.                 {
  91.                     keyMap.Add(i, klucz[i]);
  92.                 }
  93.  
  94.                 //deszyfrowanie
  95.                 char[,] tab = new char[row, col];
  96.                 int currentIndex = 0;
  97.                 foreach (KeyValuePair<int, int> km in keyMap.OrderBy(key => key.Value))
  98.                 {
  99.                     int j = km.Key;
  100.                     for (int i = 0; i < row; i++)
  101.                     {
  102.                         if (currentIndex >= zaszyfrowanaWiadomosc.Length)
  103.                         {
  104.                             tab[i, j] = ' ';
  105.                         }
  106.                         else
  107.                         {
  108.                             tab[i, j] = zaszyfrowanaWiadomosc[currentIndex];
  109.                         }
  110.                         currentIndex++;
  111.                     }
  112.                 }
  113.  
  114.                 //składanie oryginalnej wiadomości
  115.                 for (int i = 0; i < row; i++)
  116.                 {
  117.                     for (int j = 0; j < col; j++)
  118.                     {
  119.                         if (tab[i, j] != ' ')
  120.                         {
  121.                             wynik3 += tab[i, j];
  122.                         }
  123.                     }
  124.                 }
  125.  
  126.                 tb_wynik3.Text = wynik3;
  127.             }
  128.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement