Криптоанализ шифра Цезаря - C#
Формулировка задачи:
Вообщем суть заключается в том,что у нас есть зашифрованный текст Цезарем с любым шагом.Нужно сделать частотный анализ текста (найти самые часто встречающиеся символы), отсортировать их по убыванию.Далее заменяем эти символы на популярные символы в русском алфавите.Попробовал сделать так же,не расшифровывает получается дичь.
Быдло код...подскажите что нибудь.
string text1 = textBox1.Text; string text = text1.ToLower(); char[] alph = new char[] { ' ', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'x', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я' }; float[] another = new float[alph.Length]; float[] veroyatn = new float[alph.Length]; char[] alphh = text.ToCharArray(); for (int i = 0; i < alph.Length; i++) { for (int n = 0; n < alphh.Length; n++) { if (alph[i] == alphh[n]) another[i]++; } if (another[i] > 0) { veroyatn[i] = another[i]; veroyatn[i] = veroyatn[i] / text.Length; } } for (int q = 0; q < alph.Length; q++) { for (int w = 0; w < alph.Length; w++) { float pluhhhya = 0; char tmmmppp; if (veroyatn[w] < veroyatn[q]) { tmmmppp = alph[q]; pluhhhya = veroyatn[q]; alph[q] = alph[w]; veroyatn[q] = veroyatn[w]; alph[w] = tmmmppp; veroyatn[w] = pluhhhya; } } } for (int i = 0; i < alph.Length; i++) { if (veroyatn[i] == 0) { continue; } else { if (alph[i] == ' ') { this.listBox1.Items.Add("Пробел = " + veroyatn[i] + ";\n "); } else { this.listBox1.Items.Add(alph[i] + " = " + veroyatn[i] + ";\n "); } } } char[] chast = new char[] { ' ', 'о', 'а', 'е', 'и', 'н', 'э', 'р', 'с', 'л', 'в', 'к', 'п', 'м', 'у', 'д', 'я', 'ы', 'ь', 'з', 'б', 'г', 'й', 'ч', 'ю', 'х', 'ж', 'ш', 'ц', 'щ', 'ф', 'э', 'ъ' }; for (int y = 0; y < alphh.Length; y++) { for (int h = 0; h < chast.Length; h++) if (alphh[y] == '.') { textBox2.Text += "."; break; } else if (alphh[y] == ',') { textBox2.Text += ","; break; } else if (alphh[y] == '-') { textBox2.Text += "-"; break; } else if (alphh[y] == '?') { textBox2.Text += "?"; break; } else if (alphh[y] == '!') { textBox2.Text += "!"; break; } else if (alphh[y] == '»') { textBox2.Text += "»"; break; } else if (alphh[y] == '«') { textBox2.Text += "«"; break; } else if (alphh[y] == '_') { textBox2.Text += "_"; break; } else if (alphh[y] == alph[h]) { textBox2.Text += chast[h]; break; } } }
Решение задачи: «Криптоанализ шифра Цезаря»
textual
Листинг программы
CaesarCipher.Alph = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя "; string crypt = CaesarCipher.Encryption(text); for (int i = 1; i <= CaesarCipher.Alph.Length; i++) Console.WriteLine("i = {0}{2}{1}{2}", i, CaesarCipher.Decryption(crypt, i), Environment.NewLine);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д