Автор работы: Пользователь скрыл имя, 18 Декабря 2011 в 10:10, лабораторная работа
Цель: научится расшифровывать текст данным методом, составлять команды перебора символьных сочетаний, устанавливая факт совпадения одного символа за другим через заданный интервал следования, составлять команду замен символов текста на символы (знаки) ключевого словаря.
Министерство образования РФ
Институт
Технологии и Бизнеса
Кафедра ПО ВТ и АС
Технологический
факультет
Отчет по лабораторной работе
по дисциплине «Методы защиты информации»
«Расшифровка
текста методом символьных замен»
Выполнил: студент гр. ПО-4
***
Находка
2011
Тема: расшифровка фразы (из античной философии) с помощью замены символьных знаков зашифрованного текста на буквенные знаки ключевого (русского) алфавита по известным ключевым словам («философии», «большой»), используя прикладной пакет «Математика».
Цель: научится расшифровывать текст данным методом, составлять команды перебора символьных сочетаний, устанавливая факт совпадения одного символа за другим через заданный интервал следования, составлять команду замен символов текста на символы (знаки) ключевого словаря.
Порядок работы:
Зашифрованный текст:
{[?>[;1[{[}@<+&{>)+[$]@%&}@+|)
Известно, что в данном тексте содержится слово «философии», в этом слове 9 букв, поэтому полученный список надо разбить на подсписки “кандидатов на это слово”, причем кандидатами могут быть и пересекающиеся блоки, т.е. разбиваем с 1 по 9, со 2 по 10 и т.д.
С помощью команды:
разбиваем текст на слова по 9 букв в каждом.
В слове «философии» 1 буква равна 7, 2 = 8 и 9, 4 = 6, следовательно, с помощью соответствующей команды:
в находим шаблон
слова соответствующий условию, и получаем:
По
полученному шаблону можно
Получаем
текст:
Известно, что в данном тексте содержится слово «большой», в этом слове 7 букв, поэтому полученный список надо разбить на подсписки “кандидатов на это слово”, причем кандидатами могут быть и пересекающиеся блоки, т.е. разбиваем с 1 по 7, со 2 по 8 и т.д.
С помощью команды:
разбиваем текст на слова по 7 букв в каждом.
В слове «большой» 2 буква равна 6, так как ранее была найдена буква “л” и “о” из слова «философии», следует, что с помощью соответствующей команды:
в находим шаблон
слова соответствующий условию, и получаем:
Так как в последнем найденном слове после “л” идет “о”, то оно не относится к слову «большой», а в двух первых после “л” идет “8”, значит, подставляем на его место “ь”.
Возьмем первое слово и сделаем подстановку:
Получаем текст:
{о?>о;1о{о}@c+&{>и+о$]@%&}@+
В
этом тексте видим отрывок: cло$]о.
Можно сделать вывод, что это слово «словно»,
делаем подстановку:
Получаем текст:
{о?>о;1о{о}@c+&{>и+овн@%&}@+
В
этом тексте видим отрывок: вни;@>&льно.
Можно сделать вывод, что это слово «внимательно»,
делаем подстановку:
Получаем текст:
{о?том1о{о}аc+е{ти+овна%е}а+
В
этом тексте видим отрывок: бе(1cловно.
Можно сделать вывод, что это слово «безусловно»,
делаем подстановку:
Получаем текст:
{о?томуо{о}аc+е{ти+овна%е}а+
В
этом тексте видим отрывок: {о?тому.
Можно сделать вывод, что это слово «поэтому»,
делаем подстановку:
Получаем текст:
поэтомуопо}аc+епти+овна%е}а+
В
этом тексте видим отрывок: у5ени+ов.
Можно сделать вывод, что это слово «учеников»,
делаем подстановку:
Получаем текст:
поэтомуопо}аcкептиковна%е}
В
этом тексте видим отрывок: и}}а3иональн0е.
Можно сделать вывод, что это слово «иррациональные»,
делаем подстановку:
Получаем текст:
поэтомуопораcкептиковна%
В
этом тексте видим отрывоки: %ераклита,
отн=^ь, !вл!етc!, у*, за4ватило, вcеоб6ей. Можно
сделать вывод, что это слова: «гераклита»,
«отнюдь», «является», «уж», «захватило»,
«всеобщей», делаем подстановку:
Получаем текст:
поэтомуопораcкептиковнагеракли
Расставляя пробелы и знаки препинания, получаем окончательный текст:
Поэтому опора скептиков на Гераклита в глазах внимательного историка философии отнюдь не является такой уж большой несообразностью. Тут что-то есть очень глубокое, хотя, может быть, не совсем то, что хотели видеть в Гераклите скептики. Впрочем, от абсолютиста Гераклита до тех его учеников, которые уже всерьёз делали из него иррациональные выводы, можно сказать, рукой подать. Таков, например, Кратил, который из всеобщей текучести делал безусловно агностические выводы. Релятивистское учение Кратила было настолько внушительно и распространено, что захватило даже молодого Платона.
Текст (код) программы:
Public Class Form1 ' класс Form1
Dim slovo
As String, texxt As String, sl As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Private Sub Button1_Click - процедура нажатия кнопки Button1 (поиск шаблона ключевого слова)
Dim slovo1 As String, slovo2 As String
Dim dl As Byte, dl1 As Integer, k As Byte
slovo = TextBox1.Text 'присваиваем переменной slovo значение текстовой строки TextBox1
dl = Len(slovo) 'переменной dl присваиваем значение длины строковой переменной slovo
Dim shablon(2, dl) As String 'объявляем строковый массив размером 2 строки и dl столбцов
'-----------------------
'Шаблон слова, по которому будем искать
'-----------------------------
For i = 1 To dl
shablon(1, i) = Mid(slovo, i, 1) ' функция Mid(slovo, i, j) возвращает подстроку строковой переменной slovo с позиции i длиной j; массиву shablon: на первой строке присваиваем все символы строки от 1 до dl
shablon(2, i) = "0" 'второй строке присваиваем “0”.
Next
k = 0
For i = 1 To dl
If shablon(2, i) = "0" Then k = k + 1 : shablon(2, i) = Str(k) 'Если на второй строке текущей позиции столбца i массив shablon(2, i)=0, то увеличиваем k на 1 и присваиваем shablon(2, i) = Str(k) (функция Str(k) преобразует значение числовой переменной k в символьное значение)
For j = i + 1 To dl
If (shablon(1, i) = shablon(1, j)) And (shablon(2, j) = "0") Then shablon(2, j) = Str(k) 'Если текущий символ на первой строке массива shablon(1, i) равен последующему символу в этом массиве shablon(1, j) и на второй строке этого массива shablon(2, j) = "0" , то shablon(2, j) присваиваем значение переменной k
Next
Next
slovo1 = ""
For i = 1 To dl
slovo1 = slovo1 + Trim(shablon(2, i)) 'Строковой переменной slovo1 добавляем справа значение массива 2-ой строки столбцов i Trim(shablon(2, i)) (функция Trim(a) удаляет начальные и конечные пробелы).
Next
'-----------------------------
Информация о работе Расшифровка текста методом символьных замен