|
Криптографическая защита информации. Ведение Криптографическая защита информации
Ведение Криптография – наука о защите информации от прочтения ее посторонними. Защита достигается шифрованием, т.е. преобразованием, делая труднораскрываемым по входным данным, без знания защищенных входных данных специальной ключевой информации – ключа. Под ключом понимается легко изменяемая часть криптосистемы, шифрованное преобразование, хранящаяся в тайне и определяющая возможные случаи. Криптографическими средствами защиты информации называются специальные методы и средства преобразования информации в результате, которых маскируется ее содержание. Желательно, чтобы методы шифрования обладали минимум двумя свойствами:
расшифровать законный получатель сможет, выполнив обратное преобразование сообщения; восстановить по нему не сможет исходное сообщение криптоаналитик противника, перехвативший сообщение, которые сделают эту работу нецелесообразной.
Примеры криптосистемы Шифрование методом маршрутной перестановкой Описание задачи Этот метод основан на некоторой геометрической фигуре. Отрезок открытого текста записывается в такую фигуру на некоторые траектории. Шифрованным текстом является полученной при выписывании текста другой траекторией.
Пример. Зашифруем текст «Работать с датами и временем» методом «Маршрутная перестановка:
Р
| А
| Б
| О
| Т
| А
| Т
| А
| Д
| С
| Ь
| Т
| А
| М
| И
| И
| В
| Р
| М
| Е
| Н
| Е
| М
| Е
|
Получится следующий шифрованный текст:
АТРЕ МВЬТ ОСИЕ НИДБ ААМЕ МАТР
Описание логической структуры Для шифрования текста методом маршрутной перестановкой, выполним следующие действия:
Введем шифруемый текст; Уберем пробелы в тексте и преобразуем строчные буквы в пропистные; Вычисляем количество знаков в тексте; Введем размер прямоугольника; Разбиваем текст на двумерный массив; Шифруем; Выводим шифрованный текст.
Объекты 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
| В ходные и выходные данные Входными данными являются шифруемый текст и размер прямоугольника.
Выходными данными являются количество знаков в тексте и шифрованный текст.
|
|
|