Шифр Гронсфельда
Алгоритм шифра Гронсфельда (созданный в 1734 году бельгийцем Хосе де Бронкхором, графом де Гронсфельд, военным и дипломатом), является модификацией шифра Цезаря, заключающейся в том, что величина сдвига не является постоянной, а задается ключом (гаммой).
Такой способ шифрования также называется короткопериодической гаммой.
function GronsfeldEncipher(toCode, K: string): string;
var i, T, _T: integer;
begin
for i := 1 to length(toCode) do begin
_T := ord(toCode[ i ]);
T := (Ord(toCode[ i ])
+
(Ord(K[(pred(i) mod length(K)) + 1]) - Ord('0'))
);
if T >= 256 then dec(T, 256);
toCode[ i ] := Chr(T);
end;
GronsfeldEncipher := toCode;
end;
function GronsfeldDecipher(toDecode, K: string): string;
var i, T: integer;
begin
for i := 1 to length(toDecode) do begin
T := (Ord(toDecode[i])
-
(Ord(K[(pred(i) mod length(K)) + 1]) - Ord('0'))
);
if T < 0 then Inc(T, 256);
toDecode[ i ] := Chr(T);
end;
GronsfeldDecipher := toDecode;
end;
var
s: string;
begin
s := GronsfeldEncipher('INFORMATION', '2178');
writeln(s);
writeln('s = ', GronsfeldDecipher(s, '2178'));
end.
Комментарии:
Нету комментариев для вывода...