Главная страница
Навигация по странице:

  • Объекты CODEROUTKEY . FRM и значения их свойств

  • Исходный код CODEROUTKEY . FRM

  • Криптографическая защита информации. Ведение Криптографическая защита информации


    Скачать 0.84 Mb.
    НазваниеВедение Криптографическая защита информации
    АнкорКриптографическая защита информации
    Дата25.12.2021
    Размер0.84 Mb.
    Формат файлаdoc
    Имя файлаКриптографическая защита информации.doc
    ТипДокументы
    #317994
    страница2 из 6
    1   2   3   4   5   6

    Шифрование методом одиночной перестановки по ключу

    Описание задачи


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

    1. выбирается ключевое слово с неповторяющимися символами;

    2. шифруемый текст записывается последовательными строками по дсимволами ключевого слова;

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

    Пример шифрования способом простой перестановки сообщения:

    БУДЬТЕ ОСТОРОЖНЫ С ПРЕДСТАВИТЕЛЕМ ФИРМЫ "ФЕНИКС".

    При этом применим цифровой ключ 5-8-1-3-7-4-6-2. В исходном тексте вместо пробелов используется символ *.





    Ключ

    5

    8

    1

    3

    7

    4

    6

    2

    Текст

    Б

    У

    Д

    Ь

    Т

    Е

    *

    О

    С

    Т

    О

    Р

    О

    Ж

    Н

    Ы

    *

    С

    *

    П

    Р

    Е

    Д

    С

    Т

    А

    В

    И

    Т

    Е

    Л

    Е

    М

    *

    Ф

    И

    Р

    М

    Ы

    *

    Ф

    Е

    Н

    И

    К

    С

    *

    *


    Выписывая текст по колонкам и группируя символы по пять, получаем зашифрованный текст в виде:

    ДО*ВФ НОЫСЕ **ЬРП ИИИЕЖ ЕЕМСБ С*ТМФ *НДЛЫ *ТОРТ РКУТС А*Е**

    Расшифрование выполняется в следующем порядке:

    1. подсчитываем число знаков в зашифрованном тексте и делим на число знаков ключа;

    2. выписываем ключевое слово и под его знаками в соответствующей последовательности выписываем символы зашифрованного текста в определенном выше количестве;

    3. по строкам таблицы читаем исходный текст.

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

    Усложнение перестановки по таблице заключается в том, что для записи символов шифруемого текста используется специальная таблица, в которую введены некоторые усложняющие элементы. Таблица представляет собой матрицу размерами 10х10 элементов (размеры могут быть выбраны произвольно), в которую, как и в случае простой перестановки, записываются знаки шифруемого текста. Усложнение состоит в том, что определенное число клеток таблицы не используется. Количество и расположение неиспользуемых элементов является дополнительным ключом шифрования. Шифруемый текст блоками по mxn-s элементов (mxn - размеры таблицы, s - число неиспользуемых элементов) записывается в таблицу. Далее процедура шифрования аналогична простой перестановке.





    Ключ

    2

    6

    1

    3

    8

    0

    5

    9

    4

    7

    КТСекст

    Б

    У

    Д




    Ь

    Т

    Е

    *

    О

    С




    Т

    О

    Р

    О

    Ж

    Н




    Ы

    *

    С

    *

    П

    Р

    Е

    Д

    С

    Т




    А

    В

    И




    Т

    Е

    Л

    Е

    М

    *

    Ф

    И




    Р

    М

    Ы

    *

    Ф

    Е

    Н

    И

    К

    С

    *

    *

    *




    *

    *

    *

    *


    Зашифрованный текст будет выглядеть так:
    ДОПР* БСВИК РРТМ* ОЫ*Н* ЕНСЕФ *УТ*И СС*АФ И*ЬОЕ ЕЫ**Т МЕ*ТЖ ДЛ***
    При расшифровании знаки зашифрованного текста записываются столбцами таблицы в последовательности знаков ключа с пропуском неиспользуемых элементов. Исходный текст считывается по строкам.

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

    Описание логической структуры


    Для шифрования текста методом одиночной перестановки по ключу, выполним следующие действия:

    • вводим исходный текст;

    • убираем пробелы в тексте и преобразуем строчные буквы в прописные;

    • определяем количество знаков в тексте;

    • вводи размеры квадрата;

    • проверяем введенные размеры квадрата;

    • вводим ключевое слово;

    • проверяем введенное ключевое слово;

    • разбиваем ключевое слово на одномерный массив;

    • сортируем ключевое слово по возрастанию;

    • разбиваем шифруемый текст на массив;

    • формируем шифрованный текст соответствием с ключевым словом;

    • выводим шифрованный текст.






    Объекты CODEROUTKEY.FRM и значения их свойств

    Тип и номер1

    Свойство

    Значение

    Form










    Name

    frmCodeRoutKey




    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

    lblEntrance




    Caption

    1. Введите шифруемый текс:




    Font










    Underline

    -1 – True

    TextBox







    3

    Name

    txtEntrance

    CommandButton







    4

    Name

    cmdNumОfMarks




    Caption

    Подсчет знаков

    Label







    5

    Name

    lblHWArray




    Caption

    2. Введите высоту и ширину прямоугольника:




    Font










    Underline

    -1 – True

    TextBox







    6

    Name

    txtHArray




    Alignment

    2 – Center

    Label







    7

    Name

    lblX




    Alignment

    2 – Center




    Caption

    X

    TextBox







    8

    Name

    txtWArray




    Alignment

    2 – Center

    CommandButton







    9

    Name

    cmdCodeRoutKey




    Caption

    Одиночная перестановка по ключу

    TextBox







    10

    Name

    txtCodeRoutKey

    Label







    11

    Name

    lblKey




    Alignment

    2 – Center

    1 Номер указанный в первой колонке, соответствует порядковому номеру объекта на форме (рис. )




    Исходный код CODEROUTKEY.FRM

    Option Explicit
    Private Sub cmdCodeRoutKey_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

    'Обращаемся к функции CodeRoutKey

    txtCodeRoutKey.Text = CodeRoutKey(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 CodeRoutKey(TextWBlanks As String, HArray As Integer, WArray As Integer)

    'Шифрование методом одиночной перестановки по ключу

    'Описание переменных

    Dim TextInArray() As String 'Текст в массиве

    Dim KeyInArray() As String 'Ключ в массиве

    Dim KeyNum() As Integer 'Номер буквы ключивого слова

    Dim x%, w%, e%

    Dim Text As String 'Формирование шифрованного шрифта

    Dim Key As String 'Ключ

    Dim AuxKey 'Вспомогательное переменное

    'Вводим ключевой текст

    Key = InputBox("Введите ключь из " & WArray & " знаков")

    lblKey.Caption = "Ключ: '" & Key & "'"

    'Проверка введенного ключевого слова

    If Key = "" Then

    MsgBox "Вы не ввели ключевой текст"

    Exit Function

    Else

    If Len(Key) <> WArray Then

    MsgBox "Ключ не равен " & WArray & " знакам"

    Exit Function

    End If

    End If

    'Разбиваем ключевое слово на одномерный массив

    ReDim KeyInArray(WArray)

    ReDim KeyNum(WArray)

    For w = 1 To WArray

    KeyInArray(w) = Mid(Key, w, 1)

    KeyNum(w) = w

    Next w

    'Сортируем ключ по возрастанию

    For w = 1 To WArray

    For e = 1 To WArray

    If KeyInArray(w) < KeyInArray(e) Then

    AuxKey = KeyInArray(w)

    KeyInArray(w) = KeyInArray(e)

    KeyInArray(e) = AuxKey

    AuxKey = KeyNum(w)

    KeyNum(w) = KeyNum(e)

    KeyNum(e) = AuxKey

    End If

    Next e

    Next 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

    'Шифруем

    Text = ""

    For w = 1 To WArray

    For e = 1 To HArray

    Text = Text & TextInArray(e, KeyNum(w))

    Next e

    Text = Text & " "

    Next w

    CodeRoutKey = Text

    End Function



    В ходные и выходные данные


    Входными данными являются высота и ширина прямоугольника, ключ и шифруемый текст.

    Выходными данными является шифрованный текст.

      1. 1   2   3   4   5   6


    написать администратору сайта