Шифрование методом Льюиса, Шифрование методом Атбаш, Шифрование методом Цезаря, Квадрат Полибия, Шифр Вижинера, Шифр Гронсфельда, Шифрование с помощью решетки, Шифр Хилла (с длиной блока = 2),
function ViginerEncipher(toCode, K: string): string; var i: integer; currK: byte; s: string; begin s := ''; for i := 1 to length(toCode) do begin currK := pred(pos(K[ (pred(i) mod length(K)) + 1 ], TViginer)); s := s + TViginer[ ((pred(pos(toCode[ i ], TViginer)) + currK) mod length(TViginer)) + 1 ]; end; ViginerEncipher := s; end;
function ViginerDecipher(toDecode, K: string): string; var i, T: integer; currK: byte; s: string; begin s := ''; for i := 1 to length(toDecode) do begin currK := pred(pos(K[ (pred(i) mod length(K)) + 1 ], TViginer)); T := pred(pos(toDecode[ i ], TViginer)) - currK; if T < 0 then inc(T, length(TViginer)); s := s + TViginer[T + 1]; end; ViginerDecipher := s; end;
var s: string;
begin s := ViginerEncipher('INFORMATION', 'BORED'); writeln(s); writeln('s = ', ViginerDecipher(s, 'BORED')); end.