Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 14.07.2015
Сообщений: 42
1

Зашифровать-расшифровать текст с помощью шифра Цезаря

17.03.2016, 22:18. Показов 3171. Ответов 1

Author24 — интернет-сервис помощи студентам
Задание такое - текст из файла Прізвище1.txt зашифровать в Прізвище2.txt, а потом дешифровать из Прізвище2.txt в Прізвище3.txt.
Люди, подскажите, почему код вроде правильный написанный, но вот дешифрование не работает. То есть зашифрованный текст из Прізвище2.txt в Прізвище3.txt тупо записывается без расшифрования.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
 string small = "abcdefghijklmnopqrstuvwxyz", big = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            string[] imoN = new string[26];
            string[] imoZ = new string[26];
            int x, q = 0, key = 0;
            Console.WriteLine("Кодування файлу методом Цезаря...\n");
            StreamReader s = new StreamReader(File.Open(@"e:\Прізвище1.txt", FileMode.Open));
            string c = s.ReadToEnd();
            StreamWriter sw = new StreamWriter(@"e:\Прізвище2.txt", true, Encoding.Default);
            for (int j = 0; j < c.Length; j++)
            {
                if (c[j] == ' ')
                    sw.Write(string.Format(" "));
                if (c[j] == '\n')
                    sw.Write(string.Format("\n"));
                for (int i = 0; i <= 25; i++)
                {
                    x = (i + 5) % 26;
                    if (c[j] == small[i])
                        sw.Write(string.Format(@"{0}", small[x]));
                    if (c[j] == big[i])
                        sw.Write(string.Format(@"{0}", big[x]));
                }
            }
            for (char ch = 'a', ch1 = 'A'; ch <= 'z' || ch1 <= 'Z'; ch++, ch1++)
            {
                float j = 0.0f;
                for (int i = 0; i < c.Length; i++)
                {
                    if (c[i] == ch || c[i] == ch1)
                        ++j;
                }
                imoN[q] = Convert.ToString(j / c.Length);
                ++q;
            }
            sw.Close();
            StreamReader cs = new StreamReader(File.Open(@"e:\Прізвище2.txt", FileMode.Open));
            string ss = cs.ReadToEnd();
            q = 0;
            for (char ch = 'a', ch1 = 'A'; ch <= 'z' || ch1 <= 'Z'; ch++, ch1++)
            {
                float j = 0.0f;
                for (int i = 0; i < ss.Length; i++)
                {
                    if (ss[i] == ch || ss[i] == ch1)
                        ++j;
                }
                imoZ[q] = Convert.ToString(j / c.Length);
                ++q;
            }
            for (int r = 0; r < imoZ.Length; r++)
            {
                if (imoN[25] == imoZ[r])
                {
                    for (int i = 0; i <= 25; i++)
                    {
                        if (small[i] == small[r])
                            key = (26 + i - 25) % 26;
                    }
                }
            }
            Console.Write("Key={0}\n", key);
            cs.Close();
            StreamReader sd = new StreamReader(File.Open(@"e:\Прізвище2.txt", FileMode.Open));
            string cd = sd.ReadToEnd();
            StreamWriter sq = new StreamWriter(@"e:\Прізвище3.txt", true, Encoding.Default);
            for (int j = 0; j < cd.Length; j++)
            {
                if (cd[j] == ' ')
                    sq.Write(string.Format(" "));
                if (cd[j] == '\n')
                    sq.Write(string.Format("\n"));
                for (int i = 0; i <= 25; i++)
                {
                    x = (i + 26 - key) % 26;
                    if (cd[j] == small[i])
                        sq.Write(string.Format(@"{0}", small[x]));
                    if (cd[j] == big[i])
                        sq.Write(string.Format(@"{0}", big[x]));
                }
            }
            sq.Close();
            Console.WriteLine("\nФайл для кодування: e:\\Прізвище1.txt\nЗакодований файл: e:\\Прізвище2.txt\nРозшифрований файл: e:\\Прізвище3.txt");
            Console.Read();
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2016, 22:18
Ответы с готовыми решениями:

Зашифровать и расшифровать текст с помощью квадрата Вижинера
Здравствуйте, нужно зашифровать и расшифровать текст с помощью квадрата Вижинера Вот что я начал,...

Зашифровать послание с помощью шифра Цезаря с заданным шагом шифрования
Как известно, Цезарь тоже пользовался шифрованием сообщений, причем у него был свой способ. Сначала...

Зашифровать и расшифровать заданный текст с помощью перестановки
Задается натуральное число k и перестановка чисел 1, ... , k с помощью последовательности...

Зашифровать фразу методом Цезаря и расшифровать
задание-помогите кто может надо зашифровать методом цезаря фразу, ну еще и разшифровать(это вообще...

1
0 / 0 / 1
Регистрация: 18.03.2016
Сообщений: 5
18.03.2016, 09:32 2
Собственно, проблема в том, что Вы, прочитав файл Прiзвище2.txt, стразу записываете его содержимое в Прiзвище3.txt, перед самим процессом дешифровки.

Попробуйте данный код.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
string small = "abcdefghijklmnopqrstuvwxyz", big = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            string[] imoN = new string[26];
            string[] imoZ = new string[26];
            int x, q = 0, key = 0;
            Console.WriteLine("Кодування файлу методом Цезаря...\n");
            StreamReader s = new StreamReader(File.Open(@"e:\Прізвище1.txt", FileMode.Open));
            string c = s.ReadToEnd();
            StreamWriter sw = new StreamWriter(@"e:\Прізвище2.txt", true, Encoding.Default);
            for (int j = 0; j < c.Length; j++)
            {
                if (c[j] == ' ')
                    sw.Write(string.Format(" "));
                if (c[j] == '\n')
                    sw.Write(string.Format("\n"));
                for (int i = 0; i <= 25; i++)
                {
                    x = (i + 5) % 26;
                    if (c[j] == small[i])
                        sw.Write(string.Format(@"{0}", small[x]));
                    if (c[j] == big[i])
                        sw.Write(string.Format(@"{0}", big[x]));
                }
            }
            for (char ch = 'a', ch1 = 'A'; ch <= 'z' || ch1 <= 'Z'; ch++, ch1++)
            {
                float j = 0.0f;
                for (int i = 0; i < c.Length; i++)
                {
                    if (c[i] == ch || c[i] == ch1)
                        ++j;
                }
                imoN[q] = Convert.ToString(j / c.Length);
                ++q;
            }
            sw.Close();
            StreamReader cs = new StreamReader(File.Open(@"e:\Прізвище2.txt", FileMode.Open));
            string ss = cs.ReadToEnd();
            q = 0;
            for (char ch = 'a', ch1 = 'A'; ch <= 'z' || ch1 <= 'Z'; ch++, ch1++)
            {
                float j = 0.0f;
                for (int i = 0; i < ss.Length; i++)
                {
                    if (ss[i] == ch || ss[i] == ch1)
                        ++j;
                }
                imoZ[q] = Convert.ToString(j / c.Length);
                ++q;
            }
            for (int r = 0; r < imoZ.Length; r++)
            {
                if (imoN[25] == imoZ[r])
                {
                    for (int i = 0; i <= 25; i++)
                    {
                        if (small[i] == small[r])
                            key = (26 + i - 25) % 26;
                    }
                }
            }
            Console.Write("Key={0}\n", key);
            cs.Close();
            StreamReader sd = new StreamReader(File.Open(@"e:\Прізвище2.txt", FileMode.Open));
            string cd = sd.ReadToEnd();
            for (int j = 0; j < cd.Length; j++)
            {
                if (cd[j] == ' ')
                    sq.Write(string.Format(" "));
                if (cd[j] == '\n')
                    sq.Write(string.Format("\n"));
                for (int i = 0; i <= 25; i++)
                {
                    x = (i + 26 - key) % 26;
                    if (cd[j] == small[i])
                        sq.Write(string.Format(@"{0}", small[x]));
                    if (cd[j] == big[i])
                        sq.Write(string.Format(@"{0}", big[x]));
                }
            }
            StreamWriter sq = new StreamWriter(@"e:\Прізвище3.txt", true, Encoding.Default);
            sq.Close();
            Console.WriteLine("\nФайл для кодування: e:\\Прізвище1.txt\nЗакодований файл: e:\\Прізвище2.txt\nРозшифрований файл: e:\\Прізвище3.txt");
            Console.Read();
P.S. А, вообще, в таких случаях, я использую отладчик..
0
18.03.2016, 09:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2016, 09:32
Помогаю со студенческими работами здесь

Зашифровать строку с помощью шифра перестановки
Дана строка текста. Зашифровать ее с помощью шифра перестановки, который заключается в том, что...

Шифровать и дешифровать введенный текст по принципу шифра Цезаря
Надо написать прогу в лазарусе , которая будет шифровать и дешифровать введенный текст по принципу...

Зашифровать и расшифровать текст
Зашифровать и расшифровать текст, находящийся в строкe с именем Fin. Закодированный...

Зашифровать и расшифровать текст
Здравствуйте! Подскажите пожалуйста! Как зашифровать строку, что бы потом аккуратно...

Зашифровать и расшифровать свою фамилию с помощью алгоритма RSA
Добрый день, уважаемые форумчане! Имею задание: зашифровать и расшифровать свою фамилию с...

Расшифровать и зашифровать файл с помощью алгоритма (IDEA) с паролем
нигде не могу найти инфы как пользоваться DEC v5.2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru