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

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

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

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


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

    Шифрование заменой (подстановкой)

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


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


    СШТ

    A

    B

    C

    D

    E

    F

    G

    H

    I

    J

    K

    L

    M

    N

    O

    P

    Q

    R

    S

    T

    U

    V

    W

    X

    Y

    Z

    ЗС

    S

    P

    X

    L

    R

    Z

    I

    M

    A

    Y

    E

    D

    W

    T

    B

    G

    V

    N

    J

    O

    C

    F

    H

    Q

    U

    K


    где СШТ – символы шифруемого текста, ЗС – заменяющие символы.

    Используя эту таблицу зашифруем текст:

    In this book the reader will find a comprehensive survey...

    Получим следующее зашифрованное сообщение:

    At omiy pbbe omr nrslrn fadd zail s xbwgnrmrtjafr jcnfru...

    Однако, такой шифр имеет низкую стойкость. Зашифрованный текст имеет те же статистические характеристики, что и исходный.

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

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

    В качестве примера рассмотрим шифрование с помощью таблицы Вижинера. Таблица Вижинера представляет собой квадратную матрицу с n*n элементами, где n – число символов используемого алфавита. Каждая строка получена циклическим сдвигом алфавита на символ. Для шифрования выбирается буквенный ключ, в соответствии с которым формируется рабочая матрица шифрования, осуществляется это следующим образом. Из полной таблицы выбирается первая строка и те строки, первые буквы которых соответствуют буквам ключа. Первой размещается первая строка, а под нею – строки, соответствующие буквам ключа в порядке следования этих букв в ключе.


    A

    B

    C

    D

    E

    F

    G

    H

    I

    B

    C

    D

    E

    F

    G

    H

    I

    A

    C

    D

    E

    F

    G

    H

    I

    A

    B

    D

    E

    F

    G

    H

    I

    A

    B

    C

    E

    F

    G

    H

    I

    A

    B

    C

    D

    F

    G

    H

    I

    A

    B

    C

    D

    E

    G

    H

    I

    A

    B

    C

    D

    E

    F

    H

    I

    A

    B

    C

    D

    E

    F

    G

    I

    A

    B

    C

    D

    E

    F

    G

    H

    Пример таблицы Вижинера.
    Сам процесс шифрования осуществляется следующим образом:

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

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

    3. полученный текст может разбиваться на группы по несколько знаков.


    Пример:

    Ключ: BEDA

    Дан текст: BAD DIFEG…

    Ключ: BED ABEDA

    Шифрованный текст: CEG DAAHG…
    Исследования показали, что при использовании такого метода статистические характеристики исходного текста практически не проявляются в зашифрованном сообщении. Нетрудно видеть, что замена по таблице Вижинера эквивалентна простой замене с циклическим изменением алфавита, т.е. здесь мы имеем полиалфавитную подстановку, причем число используемых алфавитов определяется числом букв в слове-ключе.

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

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

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

    3. полученный текст группируется в слова по смыслу.


    Пример:

    Ключ: BED ABEDA

    Шифрованный текст: CEG DAAHG…

    Исходный текст: BAD DIFEG…
    Одним из недостатков шифрования по таблице Вижинера является то, что при небольшой длине ключа надежность шифрования остается невысокой, а формирование длинных ключей сопряжено с трудностями.

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

    A

    B

    C

    D

    E

    F

    G

    H

    I

    J

    K

    L

    M

    N

    O

    P

    f

    N

    Q

    .

    G

    m

    D

    ,

    A

    e

    L

    ^

    R

    (

    C

    x

    *

    N

    Q

    b

    +

    [

    D

    p

    )

    e

    L

    O

    R

    y

    /

    x

    k

    N

    Q

    i

    J

    W

    D

    r

    q

    e

    L

    U

    R

    (

    =

    x

    f

    N

    Q

    .

    L

    m

    D

    ,

    A

    e

    L

    ^

    R

    y

    n

    x

    *

    N

    Q

    b

    G

    [

    D

    p

    )

    e

    L

    O

    R

    (

    C

    x

    k

    N

    Q

    i

    +

    W

    D

    r

    q

    e

    L

    U

    R

    y

    /

    x

    f

    N

    Q

    .

    J

    m

    D

    ,

    A

    e

    L

    ^

    R

    (

    =

    x

    *

    N

    Q

    b

    L

    [

    D

    p

    )

    e

    L

    O

    R

    y

    n

    x

    k

    N

    Q

    i

    G

    W

    D

    r

    q

    e

    L

    U

    R

    (

    C

    x



    Дан исходный текст: BAD MONOPOLIA

    Шифрованный текст: Nf. RC(/x=^A*

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

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





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

    Тип и номер1

    Свойство

    Значение

    Form










    Name

    frmCodeVijiner




    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




    Alignment

    2 – Center




    Font










    Name

    Courier New

    Label







    4

    Name

    lblKey




    Caption

    2. Введите ключ




    Font










    Underline

    -1 – True

    TextBox







    5

    Name

    txtKey




    Alignment

    2 – Center




    Font










    Name

    Courier New

    CommandButton







    6

    Name

    cmdCodeVijiner




    Caption

    Шифрование

    TextBox







    5

    Name

    txtTableVijiner




    Font










    Name

    Courier New




    MultiLine

    -1 – True




    ScrollBars

    3 – Both

    Label







    11

    Name

    lblCodeVijiner




    Caption

    Полученный шифртекст




    Font










    Underline

    -1 – True

    TextBox







    10

    Name

    txtCodeVijiner




    Alignment

    2 – Center




    Font










    Name

    Courier New

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




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

    Option Explicit
    Private Sub cmdCodeVijiner_Click()

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

    Dim Alphabet As String 'Алфавит

    Dim Key As String 'Ключевое слово

    Dim EntranceText As String 'Шифруемый текст

    Dim TableVijiner() As String 'Таблица Вижинера

    Dim MarksInAlphabet As Integer 'Число знаков в алфавите

    Dim MarksInKey As Integer 'Число знаков в ключе

    Dim MarksInText As Integer 'Число знаков в тексте

    Dim CodeVijiner As String 'Шифрованный текст

    Dim i%, j%, k%, x%, Text$

    'Вводим алфавит

    Alphabet = "АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЭЮЯ"

    'или

    'Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXY"

    'Вычисляем количество знаков в алфавите

    MarksInAlphabet = CInt(Len(Alphabet))

    'Вводим ключ

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

    Key = StrConv(txtKey, vbUpperCase)

    'Вычисляем количество знаков в ключе

    MarksInKey = CInt(Len(Key))

    'Проверям, есть ли подобные знаки в алфавите как в ключе

    For i = 1 To MarksInKey

    Text = Mid(Key, i, 1)

    k = InStr(Alphabet, Text)

    If k = 0 Then

    MsgBox "Знак '" & Text & "' не найден в алфавите. " _

    & "Введите другое ключевое слово.", , "Ошибка в ключе"

    Exit Sub

    End If

    Next i

    'Создаем таблицу Вижинера из алфавита

    ReDim TableVijiner(MarksInAlphabet, MarksInAlphabet)

    For i = 1 To MarksInAlphabet

    k = i

    For j = 1 To MarksInAlphabet

    If k > MarksInAlphabet Then k = k - MarksInAlphabet

    TableVijiner(i, j) = Mid(Alphabet, k, 1)

    k = k + 1

    Next j

    Next i

    'Вводим шифруемый текст

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

    EntranceText = StrConv(txtEntrance, vbUpperCase)

    'Вычисляем количество знаков в тексте

    MarksInText = CInt(Len(EntranceText))

    'Проверям, есть ли подобные знаки в алфавите как в тексте

    For i = 1 To MarksInText

    Text = Mid(EntranceText, i, 1)

    If Text <> " " Then

    k = InStr(Alphabet, Text)

    If k = 0 Then

    MsgBox "Знак '" & Text & "' не найден в алфавите. " _

    & "Измените шифруемый текст.", , "Ошибка в тексте"

    Exit Sub

    End If

    End If

    Next i

    'Шифруем текст

    x = 1

    For i = 1 To MarksInText

    Text = Mid(EntranceText, i, 1)

    If Text = " " Then

    CodeVijiner = CodeVijiner & " "

    Else

    If x > MarksInKey Then x = 1

    j = InStr(Alphabet, Mid(Key, x, 1))

    x = x + 1

    k = InStr(Alphabet, Text)

    CodeVijiner = CodeVijiner & TableVijiner(k, j)

    End If

    Next i

    'Выводим таблицу Вижинера

    txtTableVijiner.Text = ""

    For i = 1 To MarksInAlphabet

    For j = 1 To MarksInAlphabet

    txtTableVijiner.Text = txtTableVijiner.Text & TableVijiner(i, j)

    Next j

    txtTableVijiner.Text = txtTableVijiner.Text & vbCrLf

    Next i

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

    txtCodeVijiner.Text = CodeVijiner

    End Sub

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


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

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

      1. 1   2   3   4   5   6


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