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

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

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




Розпочати нову тему Відповісти  [ 18 повідомлень ] 
Автор Повідомлення
 Заголовок повідомлення: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
ГОСТ 28147-89 —умовна назва радянського та російського стандарту симетричного шифрування.
Був розроблений у 8-му управлінні КДБ та введений в 1990 році.


ГОСТ 28147-89 - блочний шифр з довжиною блоку 64 біт.
Довжина ключа 256 біт.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Для ключа
Код:
0000000000000000000000000000000000000000000000000000000000000000

та відкритого тексту
Код:
0000000000000000

отримаємо результат роботи алгоритму ГОСТ 28147-89
Код:
12610BE2A6C2FDC9

(тестовий вектор ГОСТ 28147-89)

Таблиці замін по ГОСТ Р 34.11-94.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Приклади пораундно:
Код:
текст  N1=0 N2=0

РАУНД = 1

A1 = 33AF20EA  В1 = 0

РАУНД = 2

A2 = 152A880C  В2 = 33AF20EA

РАУНД = 3

A3 = 7CD81F17  В3 = 152A880C

РАУНД = 4

A4 = 33F77A3A  В4 = 7CD81F17

РАУНД = 5

A5 = 3B3E1718  В5 = 33F77A3A

РАУНД = 6

A6 = 6D62CA02  В6 = 3B3E1718

РАУНД = 7

A7 = 86D95A58  В7 = 6D62CA02

РАУНД = 8

A8 = 39047EAC  В8 = 86D95A58

РАУНД = 9

A9 = A915620A  В9 = 39047EAC

РАУНД = 10

A10 = C58B7779  В10 = A915620A

РАУНД = 11

A11 = 5E803973  В11 = C58B7779

РАУНД = 12

A12 = 757664E8  В12 = 5E803973

РАУНД = 13

A13 = B2528B0D  В13 = 757664E8

РАУНД = 14

A14 = 4A491BC9  В14 = B2528B0D

РАУНД = 15

A15 = 64EAD1FE  В15 = 4A491BC9

РАУНД = 16

A16 = 830DB6D6  В16 = 64EAD1FE

РАУНД = 17

A17 = 7AC95574  В17 = 830DB6D6

РАУНД = 18

A18 = 5710DCA2  В18 = 7AC95574

РАУНД = 19

A19 = CBFD1EB9  В19 = 5710DCA2

РАУНД = 20

A20 = 49D8079D  В20 = CBFD1EB9

РАУНД = 21

A21 = E86CE46F  В21 = 49D8079D

РАУНД = 22

A22 = CB0F9B9D  В22 = E86CE46F

РАУНД = 23

A23 = FA551F55  В23 = CB0F9B9D

РАУНД = 24

A24 = B5D15DEC  В24 = FA551F55

РАУНД = 25

A25 = 9E57A02B  В25 = B5D15DEC

РАУНД = 26

A26 = F6FB3CFD  В26 = 9E57A02B

РАУНД = 27

A27 = EEE35E04  В27 = F6FB3CFD

РАУНД = 28

A28 = 7AB450EA  В28 = EEE35E04

РАУНД = 29

A29 = 42C9D476  В29 = 7AB450EA

РАУНД = 30

A30 = ABE1524E  В30 = 42C9D476

РАУНД = 31

A31 = A6C2FDC9  В31 = ABE1524E

РАУНД = 32

A32 = A6C2FDC9  В32 = 12610BE2

A33 =12610BE2  В33 =A6C2FDC9

РЕЗУЛЬТАТ = 12610BE2A6C2FDC9


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Ключ
Код:
1010020602003007040803090500040010502600306470000800900070108001

текст
Код:
0102030405060708


пораундовий приклад для ГОСТ 28147-89
Код:

текст  N1=1020304 N2=5060708

РАУНД = 1

A1 = BA694555  В1 = 1020304

РАУНД = 2

A2 = D01CC024  В2 = BA694555

РАУНД = 3

A3 = 5AC32DBC  В3 = D01CC024

РАУНД = 4

A4 = 5C747D19  В4 = 5AC32DBC

РАУНД = 5

A5 = F586F0E2  В5 = 5C747D19

РАУНД = 6

A6 = 859E9B48  В6 = F586F0E2

РАУНД = 7

A7 = A83DEC29  В7 = 859E9B48

РАУНД = 8

A8 = 1F54844B  В8 = A83DEC29

РАУНД = 9

A9 = 53EED0C9  В9 = 1F54844B

РАУНД = 10

A10 = 8BFCDFF4  В10 = 53EED0C9

РАУНД = 11

A11 = B3B23FF9  В11 = 8BFCDFF4

РАУНД = 12

A12 = B76004EE  В12 = B3B23FF9

РАУНД = 13

A13 = 4090C9  В13 = B76004EE

РАУНД = 14

A14 = 150BCC75  В14 = 4090C9

РАУНД = 15

A15 = 71F5AF03  В15 = 150BCC75

РАУНД = 16

A16 = 6B4C90D7  В16 = 71F5AF03

РАУНД = 17

A17 = 6F5E1ABA  В17 = 6B4C90D7

РАУНД = 18

A18 = 302C1A9E  В18 = 6F5E1ABA

РАУНД = 19

A19 = 583FB7D1  В19 = 302C1A9E

РАУНД = 20

A20 = A12FCF9F  В20 = 583FB7D1

РАУНД = 21

A21 = 49562E7C  В21 = A12FCF9F

РАУНД = 22

A22 = F9EE8D5E  В22 = 49562E7C

РАУНД = 23

A23 = 9751E843  В23 = F9EE8D5E

РАУНД = 24

A24 = 1B0DD496  В24 = 9751E843

РАУНД = 25

A25 = E7056FE  В25 = 1B0DD496

РАУНД = 26

A26 = AC1A9378  В26 = E7056FE

РАУНД = 27

A27 = 34510193  В27 = AC1A9378

РАУНД = 28

A28 = CF830329  В28 = 34510193

РАУНД = 29

A29 = 392B5C75  В29 = CF830329

РАУНД = 30

A30 = 5A364678  В30 = 392B5C75

РАУНД = 31

A31 = 500E6955  В31 = 5A364678

РАУНД = 32

A32 = 500E6955  В32 = 80C8C515

A33 =80C8C515  В33 =500E6955

РЕЗУЛЬТАТ = 80C8C515500E6955



Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 3
как я поняла первый пример для режима простой замены.А второй пример для какого режима?
Не могли бы Вы выложить входной вектор, ключ и выходной вектор для режимов имитовставки и гаммирования?


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Это 2 примера ECB.

Режим гаммирования это OFB.
По сути ничего супер сложного в нем нету.

Завтра вечером закину, сегодня уже ночь.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 3
Хорошо,спасибо большое.и если есть закиньте пожалуйста режим имитовставки.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Метод гаммирования, или OFB

Возьмем вектор инициализации (ВИ, ВІ, VI)
Код:
ВИ = 1020304050607080

(НЕХ)

Код:
Ключ = 000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F

(НЕХ)

Открытый текст:
Код:
%важное-решение-не-важных-задач%


или в НЕХ:

Код:
25E2E0E6EDEEE52DF0E5F8E5EDE8E52DEDE52DE2E0E6EDFBF52DE7E0E4E0F725


что равно 4-рем блокам
Код:
25E2E0E6EDEEE52D
F0E5F8E5EDE8E52D
EDE52DE2E0E6EDFB
F52DE7E0E4E0F725


Для этого режима, кстати, не важно чтобы ОТ имел длину кратную длине блока.
Тут просто взято для удосбства, не более.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Шифруем ВИ с ключем:
получаем
Код:
9D0482C643E2BBB6

(тоесть ВИ будет как ОТ)

Полученный результат(9D0482C643E2BBB6) опять шифруем:

Код:
7CF256734FD6A177


Полученный результат опять шифруем:
Код:
5491A8EA9E50079B


Полученный результат опять шифруем:
Код:
8EEB907929A00125


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Далее Ксорим
блоки открытого текста с полученными ранее значениями:

тоесть
Код:
25E2E0E6EDEEE52D


xor
Код:
9D0482C643E2BBB6


=
Код:
B8E66220AE0C5E9B


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Ксорим остальные блоки,
получаем соответственно:

Код:
8C17AE96A23E445A
B97485087EB6EA60
7BC67799CD40F600



После всех этих операций, у нас выйдет последовательность блоков:

9D0482C643E2BBB6 B8E66220AE0C5E9B 8C17AE96A23E445A B97485087EB6EA60 7BC67799CD40F600

(ВИ выделен красным).

В итоге резульат:
Код:
9D0482C643E2BBB6B8E66220AE0C5E9B8C17AE96A23E445AB97485087EB6EA607BC67799CD40F600


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 3
Спасибо большое!


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Схема ГОСТ 28147-89:

Зображення


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Напишемо програму для шифрування алгоритмом ГОСТ:
Код:
  private
    { Private declarations }
  public
    { Public declarations }
  end;
const
  HexValues='0123456789ABCDEF';
 
var
  Form1: TForm1;
  Ki : array [0..7] of Cardinal;
  ShufRozshuf: boolean;

implementation

{$R *.dfm}


Задаэмо підключі:
Код:
procedure gostkeyinit;
var v32b: cardinal;
    myKey: byte;
    i,j,k: byte;
begin
k:=1;
      for i:=7 downto 0 do
        begin
          Ki[i]:=0;
          for j:=7 downto 0 do
            begin
              v32b:=0;
              myKey:=0;
              myKey:= ord(form1.edit1.text[k]);
              k:=k+1;
              if ($30<=myKey) and (myKey<=$39)
                then Ki[i]:=Ki[i] or ((v32b or (myKey-$30)) shl (j*4))
                else Ki[i]:=Ki[i] or ((v32b or (myKey-$37)) shl (j*4));
            end;
        end;
end;


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Процедура шифрування/дешифрування:

Код:
procedure gostblokcrypt;
var N1,N2,N12,SM1,reserv,znachh,v32b,ost: Cardinal;
    RoundNumber,j,l,n,Limit,tpm: byte;
    K: array[0..7] of byte;
    kx:integer;
const Kltab: array[0..7,0..15] of byte = (
   { 0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F }
    ($4,$A,$9,$2,$D,$8,$0,$E,$6,$B,$1,$C,$7,$F,$5,$3),
    ($E,$B,$4,$C,$6,$D,$F,$A,$2,$3,$8,$1,$0,$7,$5,$9),
    ($5,$8,$1,$D,$A,$3,$4,$2,$E,$F,$C,$7,$6,$0,$9,$B),
    ($7,$D,$A,$1,$0,$8,$9,$F,$E,$4,$6,$C,$B,$2,$5,$3),
    ($6,$C,$7,$1,$5,$F,$D,$8,$4,$A,$9,$E,$0,$3,$B,$2),
    ($4,$B,$A,$0,$7,$2,$1,$D,$3,$6,$8,$5,$9,$C,$F,$E),
    ($D,$B,$4,$1,$3,$F,$5,$9,$0,$A,$E,$7,$6,$8,$2,$C),
    ($1,$F,$D,$0,$5,$7,$A,$4,$9,$2,$3,$E,$6,$B,$8,$C));
begin
    N1:=0;
    N2:=0;
///text
kx:=1;
tpm:=0;
for j:=7 downto 0 do
begin
              v32b:=0;
              tpm:=0;
              tpm:= ord(form1.edit2.text[kx]);
              kx:=kx+1;
              if ($30<=tpm) and (tpm<=$39)
                then N1:=N1 or ((v32b or (tpm-$30)) shl (j*4))
                else N1:=N1 or ((v32b or (tpm-$37)) shl (j*4));
end;
kx:=9;
tpm:=0;
for j:=7 downto 0 do
begin
              v32b:=0;
              tpm:=0;
              tpm:= ord(form1.edit2.text[kx]);
              kx:=kx+1;
              if ($30<=tpm) and (tpm<=$39)
                then N2:=N2 or ((v32b or (tpm-$30)) shl (j*4))
                else N2:=N2 or ((v32b or (tpm-$37)) shl (j*4));
end;

  form1.memo1.Lines.Add('текст  N1='+inttohex(N1,1)+' N2='+inttohex(N2,1));

    RoundNumber:=0;
    if ShufRozshuf
      then begin
        Limit:=24;
        n:=7;
      end
      else begin
        Limit:=8;
        n:=7;
      end;

    while RoundNumber < 32 do
    Begin
      if RoundNumber < Limit
        then reserv:=Ki[RoundNumber mod 8]
        else begin
          reserv:=Ki[n];
          if n=0
            then n:=8;
          dec(n);
        end;
      asm
       mov eax, reserv;
       add eax, N1;
       mov SM1, eax;
      end;
      l:=7;
      znachh:=0;
      for j:=0 to 7 do
      begin
        reserv:=SM1;
        K[j]:=(reserv shl (l*4)) shr 28;
        K[j]:=Kltab[j,K[j]];
        v32b:=0;
        znachh:=znachh or ((v32b or K[j]) shl (j*4));
        dec(l);
      end;
      ///////////////
      asm rol znachh, 11 ;
      end;
      if RoundNumber=31 then
        begin
          N2:=znachh xor N2;
          BREAK;
        end;
      N12:=znachh xor N2;
      N2:=N1; //b
      N1:=N12; //a
      inc(RoundNumber);
    End;
    N12:=N1;
    N1:=N2;
    N2:=N12;
   form1.memo1.Lines.Add('РЕЗУЛЬТАТ = '+inttohex(N1,1)+''+inttohex(N2,1));
end;



Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Для кнопки пишемо код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
gostkeyinit;
memo1.Lines.clear;
if radiogroup1.ItemIndex=1 then
begin
ShufRozshuf:=false;
end
else
begin
ShufRozshuf:=true;
end;
gostblokcrypt;
end;


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Готову програму шифрування ГОСТ 28147-89 можна завантажити (скачати) тут:
Приєднання файлів:
GOST 28147-89.rar [164.08 KiB]
Скачали: 111

MD5("GOST 28147-89.rar") = C6902B4FB03BEA77CA23183237F89DCF
SHA-1("GOST 28147-89.rar") = B4D1C278EEA7C711CF58ABEC423D4FDB95BF9882


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

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


Повернутися наверх
  
 
 Заголовок повідомлення: Re: ГОСТ 28147-89 / GOST 28147-89
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Станом на 2014 в Україні практично не використовується.


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

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



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