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


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Aleksey V. Vaneev                    2:5003/15.1    03 Nov 2001  11:30:24
 To : Valeriy Kozhevnikov
 Subject : Шифрование ГОСТ28147-89
 -------------------------------------------------------------------------------- 
 
 
  VK> Кто-нибудь реализовывал сабж, а то своя голова уже не варит...
 
 Вроде, оно:
 === gost.pas ===
 type
         TKey = array [0..7] of LongInt;
 
 const
         CurrentKey: TKey = ($11111111, $22222222, $33333333, $44444444,
                 $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF);
 
 var
         RTable: array [0..15, 0..7] of Byte;
         Pod: array [0..1023] of Byte;
 
 function lshr (v, i: LongInt): LongInt; assembler;
 asm
    db $66
    mov ax, word ptr [v]
    db $66
    mov cx, word ptr [i]
    db $66
    shr ax, cl
    db $66
    mov dx, ax
    db $66
    shr dx, 16
 end;
 
 function lshl (v, i: LongInt): LongInt; assembler;
 asm
    db $66
    mov ax, word ptr [v]
    db $66
    mov cx, word ptr [i]
    db $66
    shl ax, cl
    db $66
    mov dx, ax
    db $66
    shr dx, 16
 end;
 
 procedure elemgost (var aa, bb: LongInt; key: LongInt);
 var
         r: LongInt;
         r1: Byte;
         r2: Byte;
         r3: Byte;
         r4: Byte;
         z: LongInt;
 
 begin
         r := aa + key;
         r1 := Pod [r and $ff];
         r2 := Pod [256 + lshr (r, 8) and $ff];
         r3 := Pod [512 + lshr (r, 16) and $ff];
         r4 := Pod [768 + lshr (r, 24)];
 
         z := LongInt (r1) + lshl (r2, 8) +
                 lshl (r3, 16) + lshl (r4, 24);
 
         bb := bb xor (lshl (z, 11) or lshr (z, 21));
 
         z := aa;
         aa := bb;
         bb := z;
 end;
 
 procedure decrypt (var s1, s2: LongInt; var Key: TKey);
 var
         i, j: LongInt;
 
 begin
         for i := 0 to 7 do
                 elemgost (s1, s2, Key [i]);
 
         for j := 1 to 3 do
                 for i := 0 to 7 do
                         elemgost (s1, s2, Key [7 - i]);
 
         j := s2;
         s2 := s1;
         s1 := j;
 end;
 
 procedure encrypt (var s1, s2: LongInt; var Key: TKey);
 var
         i, j: LongInt;
 
 begin
         for j := 1 to 3 do
                 for i := 0 to 7 do
                         elemgost (s1, s2, Key [i]);
 
         for i := 0 to 7 do
                 elemgost (s1, s2, Key [7 - i]);
 
         j := s2;
         s2 := s1;
         s1 := j;
 end;
 
 procedure preparePod;
 var
         o, z, k, i, j: Integer;
 
 begin
         o := 0;
         z := 0;
 
         while (z < 8) do
                 begin
                         for j := 0 to 15 do
                                 for i := 0 to 15 do
                                         begin
                                                 Pod [o] := (RTable [j, z + 0]
 shl 4) or
                                                         RTable [i, z + 1];
 
                                                 inc (o);
                                         end;
 
                         inc (z, 2);
                 end;
 end;
 
 procedure writeNumber (v: LongInt);
 const
         Numbers: array [0..15] of Char = '0123456789abcdef';
 
 var
         i: Integer;
 
 begin
         for i := 0 to 7 do
                 begin
                         Write (Numbers [(v shr 28) and 15]);
                         v := v shl 4;
                 end;
 end;
 
 var
         f: Text;
         i, j: Integer;
         s1, s2: LongInt;
 
 begin
         Assign (f, 'gost15.tbl');
         Reset (f);
 
         for j := 0 to 7 do
                 for i := 0 to 15 do
                         Read (f, RTable [i, j]);
 
         preparePod;
 
         s1 := $55555555;
         s2 := $AAAAAAAA;
 
         encrypt (s1, s2, CurrentKey);
 
         writeNumber (s1);
         Write (' ');
         writeNumber (s2);
         WriteLn;
 
         decrypt (s1, s2, CurrentKey);
 
         writeNumber (s1);
         Write (' ');
         writeNumber (s2);
         WriteLn;
 
         Close (f);
 end.
 ================
 
 === gost15.tbl ===
 $c $9 $f $e $8 $1 $3 $a $2 $7 $4 $d $6 $0 $b $5
 $4 $2 $f $5 $9 $1 $0 $8 $e $3 $b $c $d $7 $a $6
 $e $9 $b $2 $5 $f $7 $1 $0 $d $c $6 $a $4 $3 $8
 $d $8 $e $c $7 $3 $9 $a $1 $5 $2 $4 $6 $f $0 $b
 $8 $f $6 $b $1 $9 $c $5 $d $3 $7 $a $0 $e $2 $4
 $3 $e $5 $9 $6 $8 $0 $d $a $b $7 $c $2 $1 $f $4
 $c $6 $5 $2 $b $0 $9 $d $3 $e $7 $a $f $4 $1 $8
 $9 $b $c $0 $3 $6 $7 $5 $4 $8 $e $f $1 $a $2 $d
 ==================
  e-mail: picoder@sbis.komi.ru
 
 --- GoldED+/W32 snapshot-2001.5.29
  * Origin: We're all God's people (2:5003/15.1)
 
 

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

 Тема:    Автор:    Дата:  
 Шифрование ГОСТ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/27083be39d60.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional