Автор: Пользователь скрыл имя, 30 Марта 2013 в 09:07, реферат
Все мы в детстве использовали алгоритм простой замены и переписывались, таким образом, со своими друзьями, что бы «недоброжелатели» не узнали о наших планах. Время идет, а мы все так же переписываемся и пытаемся скрыть свои послания сложными криптографическими алгоритмами, сегодня уже ни кого не удивить такими протоколами как ssl, tsl, https. В этой статье я хочу рассказать об одном из самых легкий и понятных криптографических алгоритмах.
Шифр Цезаря один из самых известных алгоритмов в криптографии. Свое название шифр получил от Гая Юлия Цезаря, который применял его в военных целях, шифр является одним из простейших случаем алгоритма простой замены.
Все мы в детстве использовали алгоритм простой замены и переписывались, таким образом, со своими друзьями, что бы «недоброжелатели» не узнали о наших планах. Время идет, а мы все так же переписываемся и пытаемся скрыть свои послания сложными криптографическими алгоритмами, сегодня уже ни кого не удивить такими протоколами как ssl, tsl, https. В этой статье я хочу рассказать об одном из самых легкий и понятных криптографических алгоритмах.
Шифр Цезаря один из самых известных алгоритмов в криптографии. Свое название шифр получил от Гая Юлия Цезаря, который применял его в военных целях, шифр является одним из простейших случаем алгоритма простой замены.
Цезарь применял следующий алгоритм, для шифрования своих посланий он брал первую букву открытого текста и сдвигал ее на 3 позиции вперед в алфавите, таким образом, получал букву шифралфавита.
Новые понятия могут вас отпугнуть, но на самом деле все довольно банально:
открытый текст – это текст, который нужно зашифровать;
шифралфавит – буквы, которые подставляются за место открытого текста;
Открытый алфавит |
а |
б |
в |
г |
д |
е |
ё |
ж |
з |
и |
к |
л |
м |
н |
о |
п |
р |
с |
т |
у |
ф |
х |
ц |
ч |
ш |
щ |
ъ |
ы |
ь |
э |
ю |
я |
Шифралфавит |
Г |
Д |
Е |
Ё |
Ж |
З |
И |
К |
Л |
М |
Н |
О |
П |
Р |
С |
Т |
У |
Ф |
Х |
Ц |
Ч |
Ш |
Щ |
Ъ |
Ы |
Ь |
Э |
Ю |
Я |
А |
Б |
В |
Попробуем зашифровать сообщение «привет как дела»:
Открытый текст |
п |
р |
и |
в |
е |
т |
к |
а |
к |
д |
е |
л |
а |
Шифртекст |
Т |
У |
М |
Е |
З |
Х |
Н |
Г |
Н |
Ж |
З |
О |
Г |
Текст превратился в «бессмысленный» набор букв «ТУМЕЗХ НГН ЖЗОГ»!
Казалось бы, такой бессмысленный набор символов невозможно прочитать. Это не совсем так.
Если вы знаете что данный набор букв является шифром Цезаря и вам известен открытый алфавит то перебрав все возможные комбинации (в нашем примере их всего 33, по количеству букв в алфавите) вы с легкостью найдете ключь.
Стойкость любого криптографического алгоритма измеряется не сложностью алгоритма, а стойкостью ключа! В нашем случае количество возможных ключей на столько мало что даже обычный человек, имея азбуку в руках за 10-20 минут сможет расшифровать данный шифртекст.
Но мы же не обычные люди ;-) поэтому «пойдем в гору» и напишим криптор шифра Цезаря. Для написания его я выбрал самый легкий и понятный ЯП Delphi 7. Хотя исподники легко можно перенести и на любой другой паскаля подобный язык.
Математическая формулировка алгоритма цезаря выглядит на столько просто, что ее с легкостью поймет ученик 5 класса.
i + 3 = j где,
i – буква открытого алфавита;
j – буква шифралфавита;
В качестве алфавита мы возьмем всем извесные кодировки cp866 для русского языка и ansi для английского. Зделано это что бы не усложнять алгоритм массивами со своими алфавитами.
program crypt;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
str,sh:String;
j,i,len:Integer;
Begin
ReadLn(str);
len := length(str); //узнаем
длину строки
for i:=1 to len do
Begin
sh := sh + chr(ord(str[i]) + 3);
//зашифровываем согласно формуле
end;
WriteLn('open text - '+str);
WriteLn('shifr - '+sh);
ReadLn;
end.