Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

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

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

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

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

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

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

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

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

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

При этом применим цифровой ключ -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 2 3 4 5 6 7