Методы и задачи криптографической защиты информации. Мартынов А.И. - 28 стр.

UptoLike

Составители: 

под ним выписывался тот же алфавит, но со сдвигом на 3 буквы влево.
Применительно к современному русскому языку это выглядело бы так:


При зашифровке буква А заменялась буквой Г, буква Б заменялась на Д и
так далее. Например, слово ’ù превращалось в слово ’ù. Получатель
сообщения ’ù искал эти буквы в нижней строке и по буквам над ними
восстанавливал исходное слово ’ù. Ключом в шифре Цезаря является
величина сдвига нижней строки алфавита. В нашем случаеэто число 3. Для
произвольного ключа k шифр Цезаря можно представить так:
()( )
nkiC
i
mod+=
, где nколичество букв в алфавите (мощность алфавита),
i
C
шифруемый символ. Тогда обратной подстановкой является
()()
nkniC
i
mod
1
+=
.
Условием для успешной реализации этого метода является совпадение
размера множеств открытого текста и шифротекста. Это условие в
современных криптосистемах называется гомоморфизмом.
Позднее были предложены многочисленные модификации этого шифра,
которые были направлены на повышение криптостойкости (устойчивости к
дешифрованию).
Более эффективны обобщения подстановки Цезаряшифр Хилла [6,7,8]
и шифр Плэйфер [7–10]. Они основаны на подстановке не отдельных символов,
а двуграмм (шифр Плэйфер) и n-грамм (шифр Хилла). При более высокой
криптостойкости они значительно сложнее для реализации и требуют
достаточно большого количества ключевой информации.
Шифр, называемый шифром Гронсфельда [9,11], состоит в модификации
шифра Цезаря числовым ключом. Для этого под сообщением пишут числовой
ключ. При шифровании сдвиг происходит не на постоянную величину, а на
цифру, указанную под шифруемой буквой в ключе.
Еще одним обобщением системы Цезаря является аффинная
криптосистема [9,10]. Она определяется двумя числами a и b, где
1,0
nba
,
nмощность алфавита. При этом числа a и b должны быть взаимно простыми.
Соответствующими заменами являются:
()( )( )
nbiabaC
i
mod, +=
и
()( )( )
nabibaC
i
mod,
1
=
.
Реализация алгоритма Цезаря на языке С++ для ASCII таблицы будет
следующей:
//  
// char* toCode ·  
// int key · 
// ret char* -  
char* CesarCrypt (char* toCode, int key)
{
int i;
for (i=0;toCode[i]!=0;i++)
{