ВУЗ:
Составители:
Этого можно добиться следующим образом:
//
// tab -
// :
// 1: 0
columns*rows
// 2: counthash
,
, hash
procedure TForm1.genTable(var tab:ttab);
var
//
i,j:integer;
// 2- .
//
rr:trr;
//
prev:cardinal;
//
temp:integer;
begin
//
for i:=0 to rows-1 do
for j:=0 to columns-1 do
tab[i,j] := i*columns+j;
//
prev := genCongr(hash(PasswordDlg.Password.Text));
// counthash
for j := 0 to counthash do begin
// rr
for i:=0 to 3 do
if i mod 2 =0 then begin
prev:=genCongr(prev);
rr[i] := prev mod rows;
end
else begin
prev := genCongr(prev);
rr[i]:=prev mod columns;
end;
//
temp := tab[rr[0]][rr[1]];
tab[rr[0]][rr[1]] := tab[rr[2]][rr[3]];
tab[rr[2]][rr[3]] := temp;
end;
end;
В приведенном алгоритме используется прием перемешивания значений
таблицы в зависимости от пароля. То есть изначально таблица заполняется
последовательными значениями, а затем происходит перетасовка элементов. В
результате получается таблица, заполненная псевдослучайными значениями,
которая и называется таблицей подстановки.
Страницы
- « первая
- ‹ предыдущая
- …
- 58
- 59
- 60
- 61
- 62
- …
- следующая ›
- последняя »