Криптоанализ шифра Цезаря - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д