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

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

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




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

Повідомлень: 502
Blowfish - блочний симетричний криптографічний алгоритм, розроблений криптографом Брюсом Шнаєром у 1993 році.

Довжина блоку 64 біт, довжина ключа 32-448 біт.


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

Повідомлень: 24
Ключ
Код:
0000000000000000

відкритий текст
Код:
0000000000000000

шифр текст
Код:
4EF997456198DD78


Ключ
Код:
DFDFDFDFDFDFDFDF

відкритий текст
Код:
C1C1C1C1C1C1C1C1

шифр текст
Код:
427C14CE6E2F3087


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

Повідомлень: 502
Схема шифру Blowfish:
Зображення
де
червоний круг - xor
синій квадрат - додавання по модулю 2^32.


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

Повідомлень: 502
Із ключа К (довжиною від 32 до 448 біт) формуються 18 підключів P1...P18(довжиною по 32 біт кожен).

Чотири таблиці замін:
S1: S1[0]...S1[255]
S2: S2[0]...S2[255]
S3: S3[0]...S3[255]
S4: S4[0]...S4[255]

Елементи таблиці Si[j] довжиною 32 біт.


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

Повідомлень: 502
Перед процедурою (роз)шифрування проводиться заповнення таблиці S та підключів P, за допомогою ключа K:

Спочатку значення Pi та S приймаються рівними шістнадцятирічному запису цифр числа пі після коми:
Код:
P[1..18] = {
$243f6a88, $85a308d3, $13198a2e, $03707344, $a4093822, $299f31d0,
$082efa98, $ec4e6c89, $452821e6, $38d01377, $be5466cf, $34e90c6c,
$c0ac29b7, $c97c50dd, $3f84d5b5, $b5470917, $9216d5d9, $8979fb1b};


Код:
sbox1[0..255] = {
$d1310ba6, $98dfb5ac, $2ffd72db, $d01adfb7, $b8e1afed, $6a267e96
і т.д.

(ці значення можуть бути випадковими, всі значення можна переглянути тут
тобто
пі = 3,1415926535897932....
пі = 3,243F6A8885A308D3... (HEX)
)

Далі ключ K та значення P1-18 xor'яться, якщо K коротше - його повторюють потрібну кількість разів.

Після чого з отриманими параметрами шифрують рядок (1-н блок 64 біт)
Код:
$0000000000000000

результат записують в P1 та P2.

Зі зміненими параметрами шифрують рядок [Р1|P2] (1-н блок 64 біт, відповідно).
Результат записують в P3 та P4.

Зі зміненими параметрами шифрують рядок [Р3|P4] (1-н блок 64 біт, відповідно).
Результат записують в P5 та P6.

І т.д.

Після того як підключі змінені, переходять до зміни S за цим самим алгоритмом, наприклад

Зі зміненими параметрами шифрують рядок [S3[57]|S3[58]] (1-н блок 64 біт, відповідно).
Результат записують в S3[59] та S3[60].


Доки не будуть змінені всі значення P та S.


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

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



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