Методы и задачи криптографической защиты информации. Мартынов А.И. - 62 стр.

UptoLike

Составители: 

value := value shr 8;
end;
encryptblock := retblock;
end;
При дешифровании сначала воспроизводится таблица подстановки, так
как она зависит от ключа. Затем читается закодированный блок и по таблице
отыскивается строка, в которой присутствует это значение. Например, если
был прочитан зашифрованный блок, числовой эквивалент которого равен 16, то
в таблице такой значение находится в строке с номером 3. Это и есть требуемое
значение. Номер строки преобразуется в строковое представление и
записывается в выходной поток.
Ниже приведен соответствующий алгоритм:
//  
// cblock -    ,  
// return -    
//  1:      
//  2:     
//  3:      

function TForm1.decryptblock(cblock:dblock):block;
var
i,j, //     
value, //     
temp:integer; //  
retblock:block; //   
begin
value := 0;
//    
for i:=sblock*2 downto 1 do
value := (value shl 8) or ord(cblock[i]);
j:=0;
i:=0;
//    
while temp <> value do begin
if j div columns-1 = 0 then begin
i:=i+1;
j:=0;
end;
temp := tab[i][j];
j := j+1;
end;
//      
for j:=1 to sblock do begin
retblock[sblock-j+1]:=chr(i and $ff);
i := i shr 8;
end;
decryptblock := retblock;
end;
Как было сказано раньше, такой алгоритм обладает высокой
криптостойкостью за счет абсолютной случайности выбора при шифровании.