Криптология: подстановочно-перестановочный шифр и его применение

Статья - Компьютеры, программирование

Другие статьи по предмету Компьютеры, программирование

°шифрованная фраза.

 

 

 

 

 

 

Спроектируем форму Form1, так чтобы было можно выполнять как кодирование, так и декодирование введенной фразы, рис. 1.

 

 

 

 

 

 

 

 

 

Рис. 1.

 

 

 

 

 

 

 

Рис. 2.

 

 

 

 

 

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

 

Private Sub Command1_Click()

Dim a(27) As String * 1

Dim s$, t$, r$

Dim kk, m, l, i, j As Integer

kk = Text1.Text

s$ = Text2.Text

m = Len(s$)

kk = kk Mod 27

a(0) = " " : a(1) = "a" : a(2) = "b" : a(3) = "c" : a(4) = "d" : a(5) = "e" : a(6) = "f" : a(7) = "g"

a(8) = "h" : a(9) = "i" : a(10) = "j" : a(11) = "k" : a(12) = "l" : a(13) = "m" : a(14) = "n"

a(15) = "o" : a(16) = "p" : a(17) = "q" : a(18) = "r" : a(19) = "s" : a(20) = "t" : a(21) = "u"

a(22) = "v" : a(23) = "w" :a(24) = "x" : a(25) = "y" : a(26) = "z" : a(27) = " "

Rem Кодирование фразы

If Check1.Value = 1 Then

Check1.Caption = "Кодирование"

For i = 1 To m

t$ = Mid(s$, i, 1)

For j = 1 To 27

If (t$ = a(j)) Then l = j

Next j

l = l + kk

l = l Mod 27

r$ = r$ & a(l)

Next i

Text3.Text = r$

End If

Rem Декодирование шифровки

If Check1.Value = 0 Then

Check1.Caption = "Декодирование"

For i = 1 To m

t$ = Mid(s$, i, 1)

For j = 1 To 27

If (t$ = a(j)) Then l = j

Next j

l = l - kk

If l <= 0 Then l = l + 27

r$ = r$ & a(l)

Next i

Text3.Text = r$

End If

End SubPrivate Sub Command2_Click()

End

End Sub

 

Запустим программу на выполнение. Наберем число 3 в текстовом окне Введите сдвиг, а в окне Введите фразу: i remember that September. Набор проводим строчными буквами, поскольку работа с прописными буквами в программе не предусмотрена. Проверив состояние контрольного индикатора (Кодирование), закодируем набранную фразу, щелкнув по кнопке Обработать фразу. Результатом кодирования будет lcuhphpehucwkdwcvhswhpehu, рис. 2. Можно убедиться, что он совпадает с найденным теоретически.

Декодируем полученную шифровку. Для этого перенесем зашифрованную фразу lcuhphpehucwkdwcvhswhpehu из окна Результат в окно Введите фразу и изменим состояние контрольного индикатора (уберем флажок). Снова щелкнем по кнопке Обработать фразу и в окне Результат появится исходная фраза i remember that September, рис. 3.

Теперь можно зашифровать ту же фразу для другого значения сдвига, пусть например kk=5. Результат кодирования представлен на рис. 4.

 

Рис. 3.

 

 

 

 

Рис. 4.

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список использованной литературы:

 

 

  1. Ж . Брассар Современная криптология, изд. Полимед, 1999г.
  2. Библия , изд. Московская патриархия, 1998 г.
  3. Учебник по программированию Visual basic 6.0, изд. Эком, 2002г.
  4. Н. Г. Волчёнков программирование на Visual basic 6.0, изд. Инфра-м, 2002 г.