Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Симметричное шифрование и дешифрование

Автор:   •  Январь 13, 2024  •  Практическая работа  •  4,244 Слов (17 Страниц)  •  37 Просмотры

Страница 1 из 17

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ[pic 1]

федеральное государственное бюджетное образовательное учреждение высшего образования

«Тольяттинский государственный университет»

(наименование института полностью)

        

(Наименование учебного структурного подразделения)

(код и наименование направления подготовки / специальности)

        

(направленность (профиль) / специализация)

ПРАКТИЧЕСКИЕ ЗАДАНИЕ

        

по учебному курсу «Информационная безопасность»

                                           (наименование учебного курса)

Вариант 2 (при наличии)

Обучающегося

С.В. Головачев

(И.О. Фамилия)

Группа

ПИбп-1902а

Преподаватель

Раченко Т.А.

(И.О. Фамилия)

Тольятти 2023

Практические работы

Практическая работа № 1.

Тема: Симметричное шифрование и дешифрование.

Цель: Научиться кодировать и декодировать информацию симметричным методом.

Сведения, необходимые для выполнения работы:

К методам шифрования с симметричным ключом относятся: методы замены (моноалфавитная, гомофоническая, полигамная и полиалфавитная, например, по матрице Вижинера или модифицированной матрице), методы перестановки (например, по маршрутам Гамильтона или с использованием аппаратных схем), аналитические методы с использованием аналитических преобразований и аддитивные методы гаммирования или с применением генераторов (датчиков) псевдослучайных чисел.

Криптостойкость перечисленных методов шифрования определяется длинной ключа, которая для современных систем должна быть хотя бы 90 бит, но может достигать 1024 бита. Для повышения криптостойкости могут использоваться несколько ключей: зашифрованная с помощью первого ключа информация подвергается шифрованию с помощью второго ключа и т.д.

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

Обычно реализуются два типа алгоритмов:

• Поточное шифрование (побитовое)

• Блочное шифрование (при шифровании текст предварительно разбивается на блоки, как правило не менее 64 бит).

Примеры симметричного шифрования: ГОСТ 28147-89, НМАС (алгоритм шифрования, использующий хеш-функцию и закрытый ключ),

Blow Fish, НМАС-МD5 (хеш-функция для генерации 128-битной цифровой подписи), IDEA, SHA (хеш-функция для генерации 160- битной цифровой подписи), DES (использует закрытый ключ и случайное число).

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

Задание: 

1. Изучить симметричные алгоритмы шифрования.

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

30

31

32

33

34

35

36

37

38

39

40

41

42

43

#ifndef __TWO_FISH_H_

#define __TWO_FISH_H_

 

#include <iostream>

#include <iomanip>

#include <assert.h>

 

using namespace std;

 

#ifndef UINT

typedef unsigned int UINT;

#endif

 

#ifndef BYTE

typedef unsigned char BYTE;

#endif

 

class TwoFish{

public:

    //consturctors

    TwoFish(char *key, size_t length);

    TwoFish(BYTE *key, size_t length);

    //destructor

    ~TwoFish();

    //interface

    BYTE* encrypt(BYTE *plain);

    BYTE* decrypt(BYTE *cypher);

    void printSubkeys();   

private:

    //System methods

    void keySchedule(BYTE *key, size_t length);

    unsigned long long h(UINT inputWord, UINT* inputWordArray, short arraySize); //???

    BYTE q(BYTE x, int qt);

    BYTE ROR4(BYTE x);

    UINT ROR(UINT x, BYTE shift);

    UINT ROL(UINT x, BYTE shift);

    //attributes

    UINT keys[40];

    short k;

    UINT *SBox;

};

 

#endif

Исходный текст:

 Однажды, много лет назад, я разговорилась со знакомым программистом и среди прочих реплик помню его фразу о том, что изобретена гениальная , благодаря которой все знания человечества станут доступны любому субъекту, - Всемирная информационная  сеть.

Зашифрованный текст:

КодВыделить код

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

00000010  b9 eb 60 af d6 2c 3a 5e  77 fe 97 33 2e f8 08 eb  |..`..,:^w..3....|

00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

Дешифрование:

#include "TwoFish.h"

 

/********************************Constructor*********************************/

TwoFish::TwoFish(char *key, size_t length){

    BYTE *u_key = new BYTE[length];

    for (int i=0;i < length; i++){

        u_key[i] = (BYTE) key[i];

    }

    keySchedule(u_key, length);

}

 

TwoFish::TwoFish(BYTE *key, size_t length){

    keySchedule(key, length);

}

 

/*********************************Destructor*********************************/

...

Скачать:   txt (23.4 Kb)   pdf (365.4 Kb)   docx (129.3 Kb)  
Продолжить читать еще 16 страниц(ы) »
Доступно только на Essays.club