Крипто-форум crprogram.16mb.com

Програмування на Object Pascal, Lazarus, криптографія, криптоаналіз, шифри, вихідні коди, вирішення задач, приклади програм

Часовий пояс: UTC десь + 2 години




Розпочати нову тему Відповісти  [ 13 повідомлень ] 
Автор Повідомлення
 Заголовок повідомлення: Шифр Віженера / Шифр Виженера
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Шифр Віженера - поліалфавітний шифр (метод шифрування, алгоритм шифрування), авторство якого приписують Блезу де Віженеру.(5 квітня 1523 - 19 лютого 1596 в Парижі)

Ключем такого шифру є слово, чи фраза, яка накладається на відкритий текст.

Тобто
Код:
в і д к р и т и й _ т е к с т , _ я к и й _ п о т р і б н о _ з а ш и ф р у в а т и
с у п е р к л ю ч _ с у п е р , _ к л ю ч _ с у п е р к л ю _ ч с у п е р к л ю ч с

результат:
Код:
у б ф р є ф ґ ж є _ и щ а ч з , _ й щ ж є _ є ж ж ц ю л я м _ г с о щ ь є ґ н ю м ю 


Перші задокументовані згадки поліалфавітних шифрів історики знайшли у роботах Леона Батісти Альберті у 1467 році

У 1518 році Йоганн Трисемус описав tabula recta — таблицю підстановки для шифра Віженера.

tabula recta для українського алфавіту:
Код:
_   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я
а   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я
б   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а
в   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б
г   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в
ґ   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г
д   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ
е   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д
є   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е
ж   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є
з   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж
и   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з
і   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и
ї   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і
й   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї
к   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й
л   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к
м   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л
н   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м
о   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н
п   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о
р   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п
с   с   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р
т   т   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с
у   у   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т
ф   ф   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у
х   х   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф
ц   ц   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х
ч   ч   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц
ш   ш   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч
щ   щ   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш
ь   ь   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ
ю   ю   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь
я   я   а   б   в   г   ґ   д   е   є   ж   з   и   і   ї   й   к   л   м   н   о   п   р   с   т   у   ф   х   ц   ч   ш   щ   ь   ю

Вісь х - літера відритого тексту, вісь у - ключа.

Джованні Батіста Беллазо використав таблицю Трисемуса та додав ключ.

Блез Віженер запропонував Генриху III, тодішньому королю Франції, цей шифр у 1586 році, звідки і походить назва.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Шифр Віженера / Шифр Виженера
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Приклад,

відкритий текст:
Цитата:
шифр віженера це поліалфавітний шифр

ключ:
Цитата:
"ключ" ключключ кл ючключключключ ключ

шифр текст:
Цитата:
зхтк мцеаюсоч єс нїщцюздладгяжє зхтк


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Шифр Віженера / Шифр Виженера
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Для інтерфейсу навчальних шифрів, допишемо процедуру шифрування:


Код:
procedure CipherZ;
var
i,L,n:integer;
skey:string;
begin
L:=33;
if Lkey=0 then Lkey:=1;
n:=-1;
for i:=1 to ntxt do
begin
if Ptxt[i]=33 then
Ctxt[i]:=33
else
begin
n:=n+1;
Ctxt[i]:=(Ptxt[i]+Key[ n mod Lkey]) mod L;
skey:= '+'+inttostr(Key[ n mod Lkey])+'['+Caracter(Key[ n mod Lkey])+']';
form1.memo3.Lines.add(inttostr(i)+') '+inttostr(Ptxt[i])+'['+Caracter(Ptxt[i])+']'+skey+' => '+inttostr(Ctxt[i])+'['+Caracter(Ctxt[i])+']');
end;
end;

end;


Сама операція шифрування задана
Ctxt[i]:=(Ptxt[i]+Key[ n mod Lkey]) mod L;
де
L - кількість букв алфавіту,
Lkey - довжина ключа (кількість букв ключа).

Відповідно до порядкового номера літери відкритого тексту додається порядковий номер літери ключа, і якщо це значення більше кількості букв алфавіту то віднімається L, після чого ми отримуємо номер від 0..L за яким знаходимо потрібну літеру шифр тексту.

та дешифрування:
Код:
procedure CipherR;
var
i,L,n:integer;
skey:string;
begin
L:=33;
if Lkey=0 then Lkey:=1;
n:=-1;
for i:=1 to ntxt do
begin
if Ptxt[i]=33 then
Ctxt[i]:=33
else
begin
n:=n+1;
Ctxt[i]:=(Ptxt[i]-Key[ n mod Lkey]) mod L;
end;

end;

end;


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Шифр Віженера / Шифр Виженера
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Задаємо ключ:
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var
s:string;
i:integer;
begin
s:=edit1.text;
Lkey:=length(s);
for i:=1 to Lkey do
Key[i-1]:=CifraDeLetra(s[i]);
end;


Описуємо загальні змінні:
Код:
var
  Form1: TForm1;
  Ctxt,Ptxt:array[0..1000] of byte;
  key:array[0..50]of byte;
  ntxt,Lkey:integer;


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Шифр Віженера / Шифр Виженера
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Після оформлення, отримаємо результат:
Зображення


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Шифр Віженера / Шифр Виженера
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Як уже бачимо, навіть на такому коротенькому прикладі видно слабкі місця такого методу шифрування.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Шифр Віженера / Шифр Виженера
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Метод зламу шифру Віженера був опублікований у 1863 році.
Див. метод Касіски.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Шифр Віженера / Шифр Виженера
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Програмну реалізацію "шифр Віженера" скачати (завантажити) можна тут:

Приєднання файлів:
Vigener.rar [170.89 KiB]
Скачали: 243

MD5 (Vigener.rar) = "74A7B4365E4F7C5B5D683BB516D7B7D2"
SHA-1 (Vigener.rar) = "24FB4D1168613F42430B46621AE726A977B94059"


інструкція:
1. Клацаємо на файлі і зберігаємо у будь-яке зручне місце на вашому комп'ютері.
(2. Перевіряємо архів на віруси. - За бажанням.)
3. Розпаковуємо вміст архіву.
4. Клацаємо на програмі.
5. Вводимо ключ та відкритий текст.
6. Отримуємо шифр текст.

(дана програма призначена для навчання).


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Шифр Віженера / Шифр Виженера
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Схема шифра Віженера:

Код:
ключ:                     
к   р   и   п   т   о   

відкритий текст:                     
б   и   л   и   н   а   

шифртекст:                     
л   ь   х   щ   е   о


Зображення


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Шифр Віженера / Шифр Виженера
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Якщо потрібна детальна інформація - повідомте нас про це - і ми будемо намагатись допомогти вам.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Шифр Віженера / Шифр Виженера
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Cifrario tascabile (кишеньковий шифр)- італійський тактичний шифр, який використовували в італійськіх військових силах
часів Першої Світової війни. (з початку жовтня 1915р.)
Був успішно зламаний австрійською криптографічною службою.
Являв собою цифровий варіант шифра Віженера.

Зображення

Приклад
Код:
ВТ:
p
Ключ:
f

ШТ:
30


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Шифр Віженера / Шифр Виженера
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Приклад
Код:
               
ВТ:               
a   b   с   r      
Ключ:               
i   m   g   j      
               
ШТ:               
18   19   20   36      


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Шифр Віженера / Шифр Виженера
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Якщо потрібна більш детальна інформація по даному шифру - напишіть нам.


Повернутися наверх
  
 
Показати повідомлення за:  Сортувати по:  
Розпочати нову тему Відповісти  [ 13 повідомлень ] 

Часовий пояс: UTC десь + 2 години



cron
Роwеrеd bу рhрВB® аnd Hostinger web hosting