Главная arrow Двоичный код arrow Метод простой подстановки
Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Метод простой подстановки Печать

Простейшим случаем криптографического кодирования является простая подстановка: каждому исходному символу ставится в соответствие произвольный символ кодирования из какого-либо другого алфавита или из того же исходного – получается таблица соответствия. Тогда в кодируемом сообщении выполняется замена символов в соответствии с полученной таблицей.

 

Пример 1. Пусть исходным является русский алфавит. Составим таблицу соответствия, используя служебные символы, знаки препинания и знаки арифметических действий из таблицы ASCII- кодов в качестве кодового алфавита:

 

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

!   № $  %  &  *  (    )   {   }   [   ]    -    |    =   ”   ’  ~   `   :   ;   _   <   >  ^   •    ↑  →  ↓  ←  ±  ?   ¤

 

Тогда сообщение ИНФОРМАТИКА будет закодировано как }=_”~|!:}]!        .

 

Данный метод кодирования является ненадежным, так как при достаточно большой выборке закодированных сообщений при известных частотах символов исходного алфавита можно с определенной долей погрешности выполнить декодирование. В самом деле, пусть есть представительная выборка закодированных русскоязычных сообщений, общее число букв в которых равно M, и известны частоты букв русского алфавита:

 

Буква

Частота

Буква

Частота

Буква

Частота

О

0,090

М

0,026

Й

0,010

Е(Ё)

0,072

Д

0,025

Х

0,009

А

0,062

П

0,023

Ж

0,007

И

0,062

У

0,021

Ю

0,006

Т

0,053

Я

0,018

Ш

0,006

Н

0,053

Ы

0,016

Ц

0,004

С

0,045

З

0,016

Щ

0,003

Р

0,040

Ъ,Ь

0,014

Э

0,003

В

0,038

Б

0,014

Ф

0,001

Л

0,035

Г

0,013

пробелы и знаки препинания

0,175

К

0,028

Ч

0,012

 

 

 

 

Можно рассчитать частоту каждого символа s – fS :

fS = mS /M,

где mS – количество символов S в сообщениях.

Тогда получив частоты и сопоставив их с приведенной таблицей, можно определить исходный текст.

 

Пример 2.  Пусть есть закодированное сообщение из примера 1: }=_”~|!:}]!. Известно, что до кодирования оно было составлено из букв русского алфавита. Требуется декодировать его, используя в качестве представительной выборки закодированных русскоязычных текстов настоящее учебное пособие, предварительно выполнив все замены русских букв символами из таблицы соответствия примера 1.

Воспользуемся встроенными средствами текстового процессора WINWORD для определения требуемых статистических данных. 

Так определим, что общее число символов М в учебном пособии на момент подготовки данного примера составляет 275979.

Определяем, сколько раз встречаются интересующие нас символы из закодированного сообщения - ms:

символ s

}

=

_

"

~

|

!

:

]

ms

18716

14396

1436

22027

12058

8503

16835

13426

6592

 

Это позволяет рассчитать частоты символов fs по приведенной выше формуле:

символ s

}

=

_

"

~

|

!

:

]

fs

0,068

0,052

0,005

0,078

0,044

0,031

0,061

0,049

0,024

 

Сопоставим полученные данные с приведенной выше таблицей частот символов. Наиболее близкие по значению символы для полученных частот показаны ниже:

символ s

}

=

_

"

~

|

!

:

]

подходящий символ

Е,А.И

Т,Н

Ю,Ш,Ц

Е,О

С,Р

Л,К

А,И

Т,Н,С

Д,П

 

Таким образом, кодовые символы из закодированного сообщения могут быть заменены символами из соответствующего множества подходящих символов.

 

Если построить все возможные сочетания символов из указанных множеств, там будет, в частности и сочетание вида И Н * О Р * А Т И * А, где знак * означает любой символ из соответствующего, определенного выше, множества исходных символов (в случае * декодирование, очевидно, выполнено неверно). Если предъявить полученную строку человеку или автомату, способному распознать русское слово, зашифрованное сообщение можно считать декодированным.

Очевидно, декодирование также возможно при известной таблице соответствия.