Ведение
1 Криптографическая защита информации
Криптография – наука о защите информации от прочтения ее посторонними. Защита достигается шифрованием, т. е. преобразованием, делая труднораскрываемым по входным данным, без знания защищенных входных данных специальной ключевой информации – ключа. Под ключом понимается легко изменяемая часть криптосистемы, шифрованное преобразование, хранящаяся в тайне и определяющая возможные случаи. Криптографическими средствами защиты информации называются специальные методы и средства преобразования информации в результате, которых маскируется ее содержание. Желательно, чтобы методы шифрования обладали минимум двумя свойствами:
- расшифровать законный получатель сможет, выполнив обратное преобразование сообщения;
- восстановить по нему не сможет исходное сообщение криптоаналитик противника, перехвативший сообщение, которые сделают эту работу нецелесообразной.
2 Примеры криптосистемы
2.1 Шифрование методом маршрутной перестановкой
Описание задачи
Этот метод основан на некоторой геометрической фигуре. Отрезок открытого текста записывается в такую фигуру на некоторые траектории. Шифрованным текстом является полученной при выписывании текста другой траекторией.

Пример. Зашифруем текст «Работать с датами и временем» методом «Маршрутная перестановка:
Р | А | Б | О | Т | А |
Т | А | Д | С | Ь | Т |
А | М | И | И | В | Р |
М | Е | Н | Е | М | Е |
Получится следующий шифрованный текст:
АТРЕ МВЬТ ОСИЕ НИДБ ААМЕ МАТР
Описание логической структуры
Для шифрования текста методом маршрутной перестановкой, выполним следующие действия:
- Введем шифруемый текст;
- Уберем пробелы в тексте и преобразуем строчные буквы в пропистные;
- Вычисляем количество знаков в тексте;
- Введем размер прямоугольника;
- Разбиваем текст на двумерный массив;
- Шифруем;
- Выводим шифрованный текст.


Объекты CODEROUTR.FRM и значения их свойств | |||
Тип и номер1 | Свойство | Значение | |
Form | |||
Name | frmCodeRoutR | ||
BorderStyle | 4 – Fixed ToolWindows | ||
Caption | Маршрутная перестановка | ||
MaxButton | 0 – False | ||
MDIChild | -1 – True | ||
MinButton | 0 – False | ||
ShowInTaskbar | 0 – False | ||
Label | |||
1 | Name | LabTitle | |
Alignment | 2 – Center | ||
Caption | МАРШРУТНАЯ ПЕРЕСТАНОВКА | ||
Font | |||
Underline | -1 – True | ||
Label | |||
2 | Name | Lab1 | |
Caption | 1. Введите шифруемый текс: | ||
Font | |||
Underline | -1 – True | ||
TextBox | |||
3 | Name | txtEntrance | |
CommandButton | |||
4 | Name | CmdNumОfMarks | |
Caption | Подсчет знаков | ||
Label | |||
5 | Name | Lab2 | |
Caption | 2. Введите высоту и ширину прямоугольника: | ||
Font | |||
Underline | -1 – True | ||
TextBox | |||
6 | Name | txtHArray | |
Alignment | 2 – Center | ||
Label | |||
7 | Name | Lab3 | |
Alignment | 2 – Center | ||
Caption | X | ||
TextBox | |||
8 | Name | txtWArray | |
Alignment | 2 – Center | ||
CommandButton | |||
9 | Name | CmdCodeRoutR | |
Caption | Маршрутная перестановка | ||
TextBox | |||
10 | Name | txtCodeRoutR | |
1 Номер указанный в первой колонке, соответствует порядковому номеру объекта на форме (рис. ) | |||
Исходный код CODEROUTR.FRM |
Option Explicit Private Sub CmdCodeRoutR_Click() 'Описание переменных Dim TextWBlanks As String 'Текст без пробелов Dim MarksInText As Integer 'Число знаков в тексте Dim HArray As Integer 'Кол-во строк Dim WArray As Integer 'Кол-во столбцов Dim HWArray As Integer 'Произведение кол-ва строк на столбцы 'Убираем пробелы в тексте 'и преобразуем строчные буквы в прописные TextWBlanks = StrConv(Replace(txtEntrance. Text, " ", ""), vbUpperCase) 'Вычисляем колличество знаков в тексте MarksInText = CInt(Len(TextWBlanks)) HArray = CInt(txtHArray. Text) WArray = CInt(txtWArray. Text) 'Прверка введенных размеров массива HWArray = HArray * WArray If HWArray <> MarksInText Then MsgBox "Не правильно ввели высоту и ширину прямоуголника" Exit Sub End If 'Обращаемся к функции CodeRoutR txtCodeRoutR. Text = CodeRoutR(TextWBlanks, HArray, WArray) End Sub Private Sub CmdNumОfMarks_Click() 'Описание переменных Dim TextWBlanks As String 'Текст без пробелов Dim MarksInText As String 'Чило знаков в тексте 'Убираем пробелы в тексте TextWBlanks = Replace(txtEntrance. Text, " ", "") 'Вычисляем колличество знаков в тексте MarksInText = Len(TextWBlanks) CmdNumОfMarks. Caption = "В тексте " & MarksInText & " знака(ов) без пробела" End Sub Function CodeRoutR(TextWBlanks As String, HArray As Integer, WArray As Integer) 'Шифрование методом маршрутной перестановки Dim AuxArray() As String 'Вспомогательный ключ Dim TextInArray() As String 'Текст в массиве Dim Text As String 'Формирование шифрованного текста Dim x, e, w 'Разбиваем текст на массив ReDim TextInArray(HArray, WArray) x = 1 For e = 1 To HArray For w = 1 To WArray TextInArray(e, w) = Mid(TextWBlanks, x, 1) x = x + 1 Next w Next e 'Шифруем ReDim AuxArray(WArray) For e = 2 To HArray Step 2 For w = 1 To WArray AuxArray(w) = TextInArray(e, w) Next w For w = 1 To WArray TextInArray(e, WArray + 1 - w) = AuxArray(w) Next w Next e ReDim AuxArray(HArray) For w = WArray - 1 To 1 Step -2 For e = 1 To HArray AuxArray(e) = TextInArray(e, w) Next e For e = 1 To HArray TextInArray(HArray + 1 - e, w) = AuxArray(e) Next e Next w 'Сосотавляем шифрованный текст Text = "" For w = WArray To 1 Step -1 For e = 1 To HArray Text = Text & TextInArray(e, w) Next e Text = Text & " " Next w CodeRoutR = Text End Function |
Входные и выходные данные
Входными данными являются шифруемый текст и размер прямоугольника.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 |


