Добавил:
abhai2013@gmail.com Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
30.06.2018
Размер:
30.48 Кб
Скачать

Лабораторная работа № 2

(№ 9 по списку и инд.вариант t= 0)

Студента ИТ-14-1

Красовского Абхая

Тема: Шифрование методами сложной замены

Цель: Научиться разрабатывать алгоритмы (программы) для шифрования методами сложной замены

Задание

№ вар.

Описание шифра

Ограничения

1

Система шифрования Вижинера

Использовать числовой ключ длиной не менее 10 чисел

Фраза для шифрования: Я ДЕЛАЮ ЛАБОРАТОРНУЮ

Ключ: 3857491047

Шифровка:

А 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

-

-

Я

Д

Е

Л

А

Ю

Л

А

Б

О

Р

А

Т

О

Р

Н

У

Ю

3

8

5

7

4

9

1

0

4

7

3

8

5

7

4

9

1

0

В

Л

Й

Т

Д

Ж

М

А

Е

Х

У

З

Ч

Х

Ф

Ц

Ф

Ю

Дешифровка:

В

Л

Й

Т

Д

Ж

М

А

Е

Х

У

З

Ч

Х

Ф

Ц

Ф

Ю

3

8

5

7

4

9

1

0

4

7

3

8

5

7

4

9

1

0

Я

Д

Е

Л

А

Ю

Л

А

Б

О

Р

А

Т

О

Р

Н

У

Ю

Программа:

Код:

#include <iostream>

#include <conio.h>

#include <Windows.h>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

char a[33] = {'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','б','э','ю','я'};

int b = 0, n = 0;

char* str = new char[100];

char* string2 = new char[100];

cout << "Введите количество цифр в ключе" << endl;

cin >> n;

int* key = new int[100];

cout << "Введите ключ(каждая цифра через пробел)" << endl;

for (int i = 0; i < n; i++)

while(!(cin >> key[i]) || key[i] < 0 || key[i] > 33);

cout << "Введите 1 для шифрования текста или 0 для его расшифровки" << endl;

cin >> b;

if (b == 0)

{

cout << "Введите текст для расшифровки" << endl;

cin >> string2;

for (int i = n; i < strlen(string2); i++)

key[i] = key[i - n];

for(int i = 0; i < strlen(string2); i++)

{

for (int j = 0; j < 33; j++)

if (string2[i] == a[j])

{

if ((j-key[i]) < 0) string2[i] = a[33 + (j - key[i])];

else string2[i] = a[j-key[i]];

break;

}

}

cout << "Ваш расшифрованный текст" << endl;

cout << string2;

}

else

{

cout << "Введите текст для шифрования" << endl;

cin >> str;

for (int i = n; i < strlen(str); i++)

key[i] = key[i - n];

for(int i = 0; i < strlen(str); i++)

{

for (int j = 0; j < 33; j++)

if (str[i] == a[j])

{

if ((j+key[i]) > 33) str[i] = a[(j + key[i])- 33];

else str[i] = a[j+key[i]];

break;

}

}

cout << "Ваш зашифрованный текст" << endl;

cout << str;

}

delete[] str;

delete[] string2;

delete[] key;

_getch();

}

Рузультат:

Вывод: Научился разрабатывать алгоритмы (программы) для шифрования методами сложной замены

Соседние файлы в папке Второй триместр