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

Шифрование методом перестановки, исправить код

02.12.2012, 14:32. Показов 8844. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
У меня есть задание написать шифр перестановками. То есть например мы вводим "ключ"- "банан". Из него генерируется другой ключ. В этом случае ключ будет 31425. Шифруемое сообщение будет разбиваться на блоки по длине ключа и изменяться по ключу, каждый блок отдельно, затем записываться в выходную строку.
Проблема в том, что эту программу надо написать на c#, с которым я не очень дружу. И преподавателя по этому предмету у нас нет. И я запуталась с типами данных. Например как я буду генерировать ключ. Я полагаю, что я должна идти в цикле по алфавиту с начала до конца и каждую следующую букву алфавита искать во введенном "ключе". Если она найдена, то на место j, ставить цифру, которая идёт по порядку. Например буква "а". сначала j=2, мы присваиваем key[j]=1. потом идём дальше. Встечаем ещё одну "а". Теперь j=4, key[j]=2 и тд. Но. Как это всё объяснить программе? У меня получается что key типа string. Сначала она пустая. А записать посимвольно я её не могу..
Вот мой кусок кода:
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
            string input = "";
            string output = "";
            string inputkey = "";
            string key;
            string p1 = "";
            int c = 1;
            //создание русского алфавита
            char ch;
            int n = 0;
            char[] ru_mass = new char[32];
            for (int i = 1072; i <= 1103; i++)
            {
                ch = System.Convert.ToChar(i);
                ru_mass[n] = ch;
                n++;
            }
            //Console.WriteLine(ru_mass);
 
 
            Console.WriteLine("Введите сообщение");
            input = Console.ReadLine();
 
            Console.WriteLine("Введите ключ");
            inputkey = Console.ReadLine();
 
            if (input.Length < inputkey.Length)
                Console.WriteLine("длина ключа не может быть больше длины сообщения");
            else
            {
                for (int i = 0; i < ru_mass.Length; i++)
                    for (int j = 0; j < inputkey.Length; j++)
                    {
                        if (inputkey[j] == ru_mass[i])
                        {
                            key[j] = c;//вот здесь я не знаю как сделать. с-просто счётчик типа int
                            c++;
                        }
 
                    }
Помогите, пожалуйста, разобраться...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2012, 14:32
Ответы с готовыми решениями:

Шифрование методом перестановки
Нужно очень сильно программа для шифрование и дешифрирование данных которая шифрует текст от 2000 -...

Шифрование текста методом перестановки
Добрых времени суток. Суть задачи состоит в шифровании входяшей последовательности символов методом...

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

Шифрование и дешифрование методом столбцовой перестановки
Доброго времени суток. Есть приложение, которое шифрует и расшифровывает текст методом столбцовой...

2
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
02.12.2012, 18:21 2
Хм... не совсем понял. Каждую букву ключа нужно заменить на её порядковый номер в алфавите? Если да - то так:
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
class Program
{
    static void Main(string[] args)
    {
        //Считываем ключ
        Console.Write("Введите ключ: ");
        string inputKey = Console.ReadLine();
 
        //Получаем зашшифрованый ключ
        string key = CodeKey(inputKey);
 
        //Выводим зашифрованный ключ
        Console.WriteLine("Зашифрованый ключ: " + key);
        Console.ReadKey();
    }
 
    static public string CodeKey(string inputKey) //Метод шифрования
    {
        string temp = inputKey;
        string key = string.Empty;
 
        char[] russian = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя".ToCharArray();
 
        for (int i = 0; i < temp.Length; i++)
            key += (Array.IndexOf(russian, temp[i]) + 1).ToString();
 
        return key;
    }
}
0
0 / 0 / 1
Регистрация: 02.12.2012
Сообщений: 19
02.12.2012, 21:05  [ТС] 3
нет. там надо создать ключ из неповторяющихся цифр, в алфавитном порядке отыскивая буквы в ключе.. ну, я уже это сделала:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 
                for (int i = 0; i < ru_mass.Length; i++)
                {
                    for (int j = 0; j < inputkey.Length; j++)
                    {
                        if (inputkey[j] == ru_mass[i])
                        {
                            key.SetValue(c, j);
                            c++;
                        }
                    }
 
                }
0
02.12.2012, 21:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2012, 21:05
Помогаю со студенческими работами здесь

Шифрование сообщения методом одиночной перестановки по ключу
Зашифруйте сообщение «ИЛЛЮЗИИ, ЧЕМ БОЛЬШЕ О НИХ ДУМАЕШЬ, ИМЕЮТ СВОЙСТВО МНОЖИТЬСЯ, ПРИОБРЕТАТЬ...

Шифрование Эль-Гамаля: исправить код расшифровки
Написал функцию шифрования и расшифрования. Но расшифровывает не правильно, не могли бы помочь: //...

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

Шифрование методом перестановки
Народ пишу программу шифрования не могу сделать чтобы был введен ключ по которому будет...


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

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