Криптоанализ шифра Цезаря - C#

Узнай цену своей работы

Формулировка задачи:

Вообщем суть заключается в том,что у нас есть зашифрованный текст Цезарем с любым шагом.Нужно сделать частотный анализ текста (найти самые часто встречающиеся символы), отсортировать их по убыванию.Далее заменяем эти символы на популярные символы в русском алфавите.Попробовал сделать так же,не расшифровывает получается дичь. Быдло код...подскажите что нибудь.
Листинг программы
  1. string text1 = textBox1.Text;
  2. string text = text1.ToLower();
  3. char[] alph = new char[] { ' ', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'x', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я' };
  4. float[] another = new float[alph.Length];
  5. float[] veroyatn = new float[alph.Length];
  6. char[] alphh = text.ToCharArray();
  7. for (int i = 0; i < alph.Length; i++)
  8. {
  9. for (int n = 0; n < alphh.Length; n++)
  10. {
  11. if (alph[i] == alphh[n])
  12. another[i]++;
  13. }
  14. if (another[i] > 0)
  15. {
  16. veroyatn[i] = another[i];
  17. veroyatn[i] = veroyatn[i] / text.Length;
  18. }
  19. }
  20. for (int q = 0; q < alph.Length; q++)
  21. {
  22. for (int w = 0; w < alph.Length; w++)
  23. {
  24. float pluhhhya = 0;
  25. char tmmmppp;
  26. if (veroyatn[w] < veroyatn[q])
  27. {
  28. tmmmppp = alph[q];
  29. pluhhhya = veroyatn[q];
  30. alph[q] = alph[w];
  31. veroyatn[q] = veroyatn[w];
  32. alph[w] = tmmmppp;
  33. veroyatn[w] = pluhhhya;
  34. }
  35. }
  36. }
  37. for (int i = 0; i < alph.Length; i++)
  38. {
  39. if (veroyatn[i] == 0)
  40. {
  41. continue;
  42. }
  43. else
  44. {
  45. if (alph[i] == ' ')
  46. {
  47. this.listBox1.Items.Add("Пробел = " + veroyatn[i] + ";\n ");
  48. }
  49. else
  50. {
  51. this.listBox1.Items.Add(alph[i] + " = " + veroyatn[i] + ";\n ");
  52. }
  53. }
  54. }
  55. char[] chast = new char[] { ' ', 'о', 'а', 'е', 'и', 'н', 'э', 'р', 'с', 'л', 'в', 'к', 'п', 'м', 'у', 'д', 'я', 'ы', 'ь', 'з', 'б', 'г', 'й', 'ч', 'ю', 'х', 'ж', 'ш', 'ц', 'щ', 'ф', 'э', 'ъ' };
  56. for (int y = 0; y < alphh.Length; y++)
  57. {
  58. for (int h = 0; h < chast.Length; h++)
  59. if (alphh[y] == '.')
  60. {
  61. textBox2.Text += ".";
  62. break;
  63. }
  64. else if (alphh[y] == ',')
  65. {
  66. textBox2.Text += ",";
  67. break;
  68. }
  69. else if (alphh[y] == '-')
  70. {
  71. textBox2.Text += "-";
  72. break;
  73. }
  74. else if (alphh[y] == '?')
  75. {
  76. textBox2.Text += "?";
  77. break;
  78. }
  79. else if (alphh[y] == '!')
  80. {
  81. textBox2.Text += "!";
  82. break;
  83. }
  84. else if (alphh[y] == '»')
  85. {
  86. textBox2.Text += "»";
  87. break;
  88. }
  89. else if (alphh[y] == '«')
  90. {
  91. textBox2.Text += "«";
  92. break;
  93. }
  94. else if (alphh[y] == '_')
  95. {
  96. textBox2.Text += "_";
  97. break;
  98. }
  99. else if (alphh[y] == alph[h])
  100. {
  101. textBox2.Text += chast[h];
  102. break;
  103. }
  104. }
  105. }

Решение задачи: «Криптоанализ шифра Цезаря»

textual
Листинг программы
  1. CaesarCipher.Alph = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя ";
  2. string crypt = CaesarCipher.Encryption(text);
  3.  
  4. for (int i = 1; i <= CaesarCipher.Alph.Length; i++)
  5.     Console.WriteLine("i = {0}{2}{1}{2}", i, CaesarCipher.Decryption(crypt, i), Environment.NewLine);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут