Криптоанализ шифра Цезаря - 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);

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


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

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

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