Новичку полезно



Алгоритм простой замены Часть 1 - Шифр Цезаря

Все мы в детстве использовали алгоритм простой замены и переписывались, таким образом, со своими друзьями, что бы «недоброжелатели» не узнали о наших планах. Время идет, а мы все так же переписываемся и пытаемся скрыть свои послания сложными криптографическими алгоритмами, сегодня уже ни кого не удивить такими протоколами как 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.

Приложения

cp866: 

 

 

 

 

 

 

 

 

 

 

 

ansi:

Добавить комментарий




Cтатистика

SMS.копилка

SMS.копилка

Orphus

Система Orphus