Криптология подстановочно-перестановочный шифр и его применение — страница 17
r 2 9 0 18 5 13 5 13 2 5 18 0 20 8 1 20 0 19 5 16 20 5 13 2 5 18 3 12 3 21 8 16 8 16 5 8 21 3 23 11 4 23 3 22 8 19 23 8 16 5 8 21 4 l c u h p h p e h u c w k d w c v h s w h p e h u Пояснения к таблице: 1-я строка – фраза для шифрования; 2-я строка – номера букв фразы для шифрования в латинском алфавите; 3-я строка – номера букв фразы для шифрования, увеличенные на 3; 4-я строка – зашифрованная фраза. Спроектируем форму 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 Sub Private Sub Command2_Click() End End Sub Запустим программу на выполнение. Наберем число 3 в текстовом окне «Введите сдвиг», а в окне «Введите фразу»: i remember that September. Набор проводим строчными буквами, поскольку работа с прописными буквами в программе не предусмотрена. Проверив состояние контрольного индикатора (Кодирование), закодируем набранную фразу, щелкнув по кнопке «Обработать фразу». Результатом кодирования будет lcuhphpehucwkdwcvhswhpehu, рис. 2. Можно убедиться, что он совпадает с «найденным теоретически». Декодируем полученную шифровку. Для этого перенесем зашифрованную фразу lcuhphpehucwkdwcvhswhpehu из окна «Результат» в окно «Введите фразу» и изменим состояние контрольного индикатора (уберем флажок). Снова щелкнем по кнопке «Обработать фразу» и в окне «Результат» появится исходная фраза i remember that September, рис. 3. Теперь можно зашифровать ту же фразу для другого значения сдвига, пусть например kk = 5. Результат кодирования представлен на рис. 4. Рис.
Похожие работы
- Доклады
- Рефераты
- Рефераты
- Рефераты
- Контрольные