Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Igor Dolgov                          2:5020/2013.20 19 Nov 2001  00:16:13
 To : Aleksey V. Vaneev
 Subject : Шифрование ГОСТ28147-89 Оно ли это?
 -------------------------------------------------------------------------------- 
 
 
 Суб Hоя 03 2001 10:30, Aleksey V. Vaneev отписал к Valeriy Kozhevnikov
 следyющее:
  VK>> Кто-нибудь реализовывал сабж, а то своя голова уже не варит...
  AV> Вроде, оно:
 
  Вот решил проверить и что-то не пойму. Зашифровал файл 32К состоящий из
  пробелов и получил постоянно повторяющиеся комбинации из 8 байт. Разве ГОСТ
  должен себя вести подобным образом? К тому же, насколько мне известно
  реализация сабжевого алгоритма довольно сложна, а здесь мы видим какое-то
  примитивное шифрование по непонятной таблице из 1024 байт, которая создается
  из другой таблицы без участия ключа. Вообщем сложилось у меня впечатление,
  что это какая-то лажа, не имеющая к ГОСТу никакого отношения. Если я не прав,
  пожалуйста поправте. Может у кого есть нормальная реализация ГОСТа,
  на Си, Паскале или Ассемблере, буду весьма признателен. Очень нужно.
  Hу или УРЛ, на худой конец. Или подробное описание самого алгоритма.
  Жду Вашей помощи.
 
  2(Ко)Модератор: Прошу прощение за избыточное цитирование. Боюсь что оригинал
                  программы многие у себя не сохранили.
 
  AV> === gost.pas ===
  AV> type
  AV>         TKey = array [0..7] of LongInt;
 
  AV> const
  AV>         CurrentKey: TKey = ($11111111, $22222222, $33333333,
  AV> $44444444,
  AV>                 $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF);
 
  AV> var
  AV>         RTable: array [0..15, 0..7] of Byte;
  AV>         Pod: array [0..1023] of Byte;
 
  AV> function lshr (v, i: LongInt): LongInt; assembler;
  AV> asm
  AV>    db $66
  AV>    mov ax, word ptr [v]
  AV>    db $66
  AV>    mov cx, word ptr [i]
  AV>    db $66
  AV>    shr ax, cl
  AV>    db $66
  AV>    mov dx, ax
  AV>    db $66
  AV>    shr dx, 16
  AV> end;
 
  AV> function lshl (v, i: LongInt): LongInt; assembler;
  AV> asm
  AV>    db $66
  AV>    mov ax, word ptr [v]
  AV>    db $66
  AV>    mov cx, word ptr [i]
  AV>    db $66
  AV>    shl ax, cl
  AV>    db $66
  AV>    mov dx, ax
  AV>    db $66
  AV>    shr dx, 16
  AV> end;
 
  AV> procedure elemgost (var aa, bb: LongInt; key: LongInt);
  AV> var
  AV>         r: LongInt;
  AV>         r1: Byte;
  AV>         r2: Byte;
  AV>         r3: Byte;
  AV>         r4: Byte;
  AV>         z: LongInt;
 
  AV> begin
  AV>         r := aa + key;
  AV>         r1 := Pod [r and $ff];
  AV>         r2 := Pod [256 + lshr (r, 8) and $ff];
  AV>         r3 := Pod [512 + lshr (r, 16) and $ff];
  AV>         r4 := Pod [768 + lshr (r, 24)];
 
  AV>         z := LongInt (r1) + lshl (r2, 8) +
  AV>                 lshl (r3, 16) + lshl (r4, 24);
 
  AV>         bb := bb xor (lshl (z, 11) or lshr (z, 21));
 
  AV>         z := aa;
  AV>         aa := bb;
  AV>         bb := z;
  AV> end;
 
  AV> procedure decrypt (var s1, s2: LongInt; var Key: TKey);
  AV> var
  AV>         i, j: LongInt;
 
  AV> begin
  AV>         for i := 0 to 7 do
  AV>                 elemgost (s1, s2, Key [i]);
 
  AV>         for j := 1 to 3 do
  AV>                 for i := 0 to 7 do
  AV>                         elemgost (s1, s2, Key [7 - i]);
 
  AV>         j := s2;
  AV>         s2 := s1;
  AV>         s1 := j;
  AV> end;
 
  AV> procedure encrypt (var s1, s2: LongInt; var Key: TKey);
  AV> var
  AV>         i, j: LongInt;
 
  AV> begin
  AV>         for j := 1 to 3 do
  AV>                 for i := 0 to 7 do
  AV>                         elemgost (s1, s2, Key [i]);
 
  AV>         for i := 0 to 7 do
  AV>                 elemgost (s1, s2, Key [7 - i]);
 
  AV>         j := s2;
  AV>         s2 := s1;
  AV>         s1 := j;
  AV> end;
 
  AV> procedure preparePod;
  AV> var
  AV>         o, z, k, i, j: Integer;
 
  AV> begin
  AV>         o := 0;
  AV>         z := 0;
 
  AV>         while (z < 8) do
  AV>                 begin
  AV>                         for j := 0 to 15 do
  AV>                                 for i := 0 to 15 do
  AV>                                         begin
  AV>                                                 Pod [o] := (RTable [j,
  AV> z + 0] shl 4) or
  AV>                                                         RTable [i, z +
  AV> 1];
 
  AV>                                                 inc (o);
  AV>                                         end;
 
  AV>                         inc (z, 2);
  AV>                 end;
  AV> end;
 
  AV> procedure writeNumber (v: LongInt);
  AV> const
  AV>         Numbers: array [0..15] of Char = '0123456789abcdef';
 
  AV> var
  AV>         i: Integer;
 
  AV> begin
  AV>         for i := 0 to 7 do
  AV>                 begin
  AV>                         Write (Numbers [(v shr 28) and 15]);
  AV>                         v := v shl 4;
  AV>                 end;
  AV> end;
 
  AV> var
  AV>         f: Text;
  AV>         i, j: Integer;
  AV>         s1, s2: LongInt;
 
  AV> begin
  AV>         Assign (f, 'gost15.tbl');
  AV>         Reset (f);
 
  AV>         for j := 0 to 7 do
  AV>                 for i := 0 to 15 do
  AV>                         Read (f, RTable [i, j]);
 
  AV>         preparePod;
 
  AV>         s1 := $55555555;
  AV>         s2 := $AAAAAAAA;
 
  AV>         encrypt (s1, s2, CurrentKey);
 
  AV>         writeNumber (s1);
  AV>         Write (' ');
  AV>         writeNumber (s2);
  AV>         WriteLn;
 
  AV>         decrypt (s1, s2, CurrentKey);
 
  AV>         writeNumber (s1);
  AV>         Write (' ');
  AV>         writeNumber (s2);
  AV>         WriteLn;
 
  AV>         Close (f);
  AV> end.
 
  AV> === gost15.tbl ===
  AV> $c $9 $f $e $8 $1 $3 $a $2 $7 $4 $d $6 $0 $b $5
  AV> $4 $2 $f $5 $9 $1 $0 $8 $e $3 $b $c $d $7 $a $6
  AV> $e $9 $b $2 $5 $f $7 $1 $0 $d $c $6 $a $4 $3 $8
  AV> $d $8 $e $c $7 $3 $9 $a $1 $5 $2 $4 $6 $f $0 $b
  AV> $8 $f $6 $b $1 $9 $c $5 $d $3 $7 $a $0 $e $2 $4
  AV> $3 $e $5 $9 $6 $8 $0 $d $a $b $7 $c $2 $1 $f $4
  AV> $c $6 $5 $2 $b $0 $9 $d $3 $e $7 $a $f $4 $1 $8
  AV> $9 $b $c $0 $3 $6 $7 $5 $4 $8 $e $f $1 $a $2 $d
  AV> ==================
 
     Удачи тебе, Aleksey.
 ---
  * Origin: Каждой тваре по NetWare. (2:5020/2013.20)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Шифрование ГОСТ28147-89   Valeriy Kozhevnikov   02 Nov 2001 01:31:05 
 Шифрование ГОСТ28147-89   Aleksey V. Vaneev   03 Nov 2001 11:30:24 
 Шифрование ГОСТ28147-89 Оно ли это?   Igor Dolgov   19 Nov 2001 00:16:13 
 Шифрование ГОСТ28147-89 Оно ли это?   Aleksey V. Vaneev   19 Nov 2001 09:48:05 
 Шифрование ГОСТ28147-89 Оно ли это?   Alex Astafiev   20 Nov 2001 10:47:00 
 Шифрование ГОСТ28147-89 Оно ли это?   George Shepelev   20 Nov 2001 14:43:38 
 Re: Шифрование ГОСТ28147-89 Оно ли это?   Vinokurov Andrey   22 Nov 2001 10:39:02 
 Шифрование ГОСТ28147-89 Оно ли это?   George Shepelev   23 Nov 2001 17:09:54 
 Re: Шифрование ГОСТ28147-89 Оно ли это?   Vinokurov Andrey   26 Nov 2001 14:11:53 
 Шифpование ГОСТ28147-89 Оно ли это?   Andrey Arnold   28 Nov 2001 21:39:03 
 Re: Шифpование ГОСТ28147-89 Оно ли это?   Vinokurov Andrey   29 Nov 2001 14:57:01 
 Шифрование ГОСТ28147-89 Оно ли это?   George Shepelev   28 Nov 2001 19:42:01 
 Re: Шифрование ГОСТ28147-89 Оно ли это?   Vinokurov Andrey   29 Nov 2001 14:44:35 
 Шифрование ГОСТ28147-89 Оно ли это?   George Shepelev   05 Dec 2001 20:57:39 
 Re: Шифрование ГОСТ28147-89 Оно ли это?   Vinokurov Andrey   10 Dec 2001 13:16:48 
 Шифрование ГОСТ28147-89 Оно ли это?   George Shepelev   11 Dec 2001 15:48:57 
 Re^2: Шифрование ГОСТ28147-89 Оно ли это?   Comoderator Of Ru Algorithms   11 Dec 2001 22:44:12 
 [+] Re: Шифрование ГОСТ28147-89 Оно ли это?   Comoderator Of Ru Algorithms   08 Dec 2001 13:57:00 
 Re: Шифрование ГОСТ28147-89 Оно ли это?   Comoderator Of Ru Algorithms   29 Nov 2001 21:49:03 
 Re: Шифрование ГОСТ28147-89 Оно ли это?   Vinokurov Andrey   19 Nov 2001 13:37:52 
 Шифpование ГОСТ28147-89 Оно ли это?   Dmitriy Litskalov   19 Nov 2001 12:23:40 
 Шифpование ГОСТ28147-89 Оно ли это?   Fedor Malyshkin   19 Nov 2001 14:17:09 
 Шифpование ГОСТ28147-89 Оно ли это?   Alexis Nazarbayev   20 Nov 2001 00:58:04 
 Re: Шифpование ГОСТ28147-89 Оно ли это?   Vinokurov Andrey   20 Nov 2001 10:23:56 
 Шифpование ГОСТ28147-89 Оно ли это?   Alexis Nazarbayev   20 Nov 2001 12:10:35 
 Re: Шифpование ГОСТ28147-89 Оно ли это?   Vinokurov Andrey   21 Nov 2001 11:56:01 
 Шифpование ГОСТ28147-89 Оно ли это?   Alexis Nazarbayev   21 Nov 2001 21:03:44 
 Re^2: Шифpование ГОСТ28147-89 Оно ли это?   Comoderator Of Ru Algorithms   21 Nov 2001 19:24:03 
 Re: Шифрование ГОСТ28147-89 Оно ли это?   Andrey Dashkovsky   19 Nov 2001 21:10:55 
Архивное /ru.algorithms/44453bf843e4.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional