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

UptoLike

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

Допустим, что размер группы 4 бита, а число столбцов равно 3. Значит,
таблица будет иметь размерность
31632
4
×=×
и должна заполняться
значениями в диапазоне от 0 до 48.
Например, в нашем случае может получиться такая таблица:
1 2 3
0 15 10 2
1 3 17 9
2 8 14 1
3 0 16 45
4 …
7 20 5 38
8 …
15 12 30 4
При шифровании исходный блок представляется в виде числового
эквивалента и в таблице отыскивается строка, номер которой равен этому
эквиваленту. Далее в этой строке абсолютно случайно выбирается одно из
нескольких значений.
Например, был прочитан блок, числовой эквивалент которого равен 7.
По таблице в строке с номером 7 находится тройка значений (20, 5, 38). При
помощи функции random(3) выбирается любое значений из этой тройки. Это
значение и есть зашифрованный блок.
На языке Object Pascal такой алгоритм можно представить следующим
образом:
//  
// cblock -  ,  
// return -    
//  :
//  1:      
//  2:    
//  3:      

function TForm1.encryptblock(cblock:block):dblock;
var
i, //  
value:integer; //    

retblock: dblock; //   
begin
value := 0;
//      
for i:=1 to sblock do
value := (value shl 8) or ord(cblock[i]);
//    
value := tab[value][random(columns)];
// е      
for i:=1 to sblock*2 do begin
retblock[i]:= chr(value and $00ff);