Квадрат Полибия
В Древней Греции (II в. до н.э.) был известен шифр, называемый "квадрат Полибия". Шифровальная таблица представляла собой квадрат с пятью столбцами и пятью строками, которые нумеровались цифрами от 1 до 5. В каждую клетку такого квадрата записывалась одна буква. В результате каждой букве соответствовала пара чисел, и шифрование сводилось к замене буквы парой чисел.
Соответственно, шифрование/дешифрование текста производятся следующим образом:
const
TPolibius: array['A' .. 'E', 'A' .. 'E'] of char = (
('A', 'B', 'C', 'D', 'E'),
('F', 'G', 'H', 'I', 'K'),
('L', 'M', 'N', 'O', 'P'),
('Q', 'R', 'S', 'T', 'U'),
('V', 'W', 'X', 'Y', 'Z')
);
function PolibiusEncipher(toCode: string): string;
var
i: integer;
ix, jx: char;
s: string;
begin
s := '';
for i := 1 to length(toCode) do begin
for ix := 'A' to 'E' do
for jx := 'A' to 'E' do
if TPolibius[ix, jx] = toCode[ i ] then begin
s := s + ix + jx; break;
end;
end;
PolibiusEncipher := s
end;
function PolibiusDecipher(toDecode: string): string;
var
i: integer;
s: string;
begin
s := '';
i := 1;
while i <= length(toDecode) do begin
s := s + TPolibius[toDecode[ i ], toDecode[succ(i)]];
inc(i, 2);
end;
PolibiusDecipher := s
end;
var
s: string;
begin
s := PolibiusEncipher('POLIBIUS');
writeln(s);
writeln('s = ', PolibiusDecipher(s));
end.
Комментарии:
Нету комментариев для вывода...