ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 07.06.2019

Просмотров: 124

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторная работа № 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();

}


Р узультат:

















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




Смотрите также файлы