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

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

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




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

Повідомлень: 502
Афінний шифр - загальний випадок шифру Цезаря, який можна записати формулою:

Ci = ( Pi * k1 + k2 ) mod L.

Де,
k1, k2 - взаємно прості цілі числа, ключ шифру.
L - довжина алфавіту.


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

Повідомлень: 502
наприклад, для українського алфавіту

для
к1=5 та к2=7

А=0 => 0*5+7 = 7 - є (відлік почнемо з 0).
Б=1 => 1*5+7 = 12 - ї

і т.д.

Кількість можливих ключів менше ніж 33*33= 1089.

Зрозуміло, що даний шифр крім навчальної, не має ніякої практичної цінності.


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

Повідомлень: 282
Для українського алфавіту, приклад
к1= 5
к2= 7
Код:
                  
00    А    =>    5 * 00 + 7 =    07    =>    Є   
01    Б    =>    5 * 01 + 7 =    12    =>    Ї   
02    В    =>    5 * 02 + 7 =    17    =>    Н   
03    Г    =>    5 * 03 + 7 =    22    =>    Т   
04    Ґ    =>    5 * 04 + 7 =    27    =>    Ч   
05    Д    =>    5 * 05 + 7 =    32    =>    Я   
06    Е    =>    5 * 06 + 7 =    04    =>    Ґ   
07    Є    =>    5 * 07 + 7 =    09    =>    З   
08    Ж    =>    5 * 08 + 7 =    14    =>    К   
09    З    =>    5 * 09 + 7 =    19    =>    П   
10    И    =>    5 * 10 + 7 =    24    =>    Ф   
11    І    =>    5 * 11 + 7 =    29    =>    Щ   
12    Ї    =>    5 * 12 + 7 =    01    =>    Б   
13    Й    =>    5 * 13 + 7 =    06    =>    Е   
14    К    =>    5 * 14 + 7 =    11    =>    І   
15    Л    =>    5 * 15 + 7 =    16    =>    М   
16    М    =>    5 * 16 + 7 =    21    =>    С   
17    Н    =>    5 * 17 + 7 =    26    =>    Ц   
18    О    =>    5 * 18 + 7 =    31    =>    Ю   
19    П    =>    5 * 19 + 7 =    03    =>    Г   
20    Р    =>    5 * 20 + 7 =    08    =>    Ж   
21    С    =>    5 * 21 + 7 =    13    =>    Й   
22    Т    =>    5 * 22 + 7 =    18    =>    О   
23    У    =>    5 * 23 + 7 =    23    =>    У   
24    Ф    =>    5 * 24 + 7 =    28    =>    Ш   
25    Х    =>    5 * 25 + 7 =    00    =>    А   
26    Ц    =>    5 * 26 + 7 =    05    =>    Д   
27    Ч    =>    5 * 27 + 7 =    10    =>    И   
28    Ш    =>    5 * 28 + 7 =    15    =>    Л   
29    Щ    =>    5 * 29 + 7 =    20    =>    Р   
30    Ь    =>    5 * 30 + 7 =    25    =>    Х   
31    Ю    =>    5 * 31 + 7 =    30    =>    Ь   
32    Я    =>    5 * 32 + 7 =    02    =>    В   
   


к1 має бути взаємно простим з L=33, тобто не може бути рівним 3 чи 11.
Так як для к1=11 отримаємо:
к1= 11
к2= 7
Код:
               
0    А    =>    11 * 0 + 7 =    07    =>    Є
1    Б    =>    11 * 1 + 7 =    18    =>    О
2    В    =>    11 * 2 + 7 =    29    =>    Щ
3    Г    =>    11 * 3 + 7 =    07    =>    Є
4    Ґ    =>    11 * 4 + 7 =    18    =>    О
5    Д    =>    11 * 5 + 7 =    29    =>    Щ
6    Е    =>    11 * 6 + 7 =    07    =>    Є
7    Є    =>    11 * 7 + 7 =    18    =>    О
8    Ж    =>    11 * 8 + 7 =    29    =>    Щ
9    З    =>    11 * 9 + 7 =    07    =>    Є


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

Повідомлень: 502
Для інтерфейсу навчальних шифрів програмна реалізація афінного шифру буде мати вигляд
Код:
procedure CipherZ;
var
i,L:integer;

begin
L:=33;

for i:=1 to ntxt do
Ctxt[i]:=(Ptxt[i]*K1+K2) mod L;

end;


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

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

Приєднання файлів:
Affine_cipher.rar [169.26 KiB]
Скачали: 124

MD5 (Affine_cipher.rar) = "083FC24D88908D7581FFB7000F95101C"
SHA-1 (Affine_cipher.rar) = "A1D097B318EB966C819A5F3A84679F1492405BFF"


Зображення

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

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


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

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



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