Crypt:= Char(x);
end;
Понятно, что для расшифровки символа надо выполнить обратный сдвиг. После вычитания ключа проверим, не попадает ли полученная разность в область управляющих символов? Если попадает, поправим её, сместив в область видимых символов. Вот текст функции расшифровки Decrypt.
function Decrypt(arg: char): char;
var x: integer;
begin
x:= Ord(arg)– CKey;
if x<32 then x:= x+256–32;
Decrypt:= Char(x);
end;
Теперь все готово для построения программы шифрования и расшифровки строки «P_24_1».
{ P_24_1 – Шифрование строки}
const CKey = 2; { Ключ Цезаря }
{––––– Шифрование одного символа –––––}
function Encrypt(arg: char): char;
var x: integer;
begin
x:= Ord(arg)+ CKey;
if x>255 then x:= x–256+32;
Encrypt:= Char(x);
end;
{––––– Расшифровка одного символа –––––}
function Decrypt(arg: char): char;
var x: integer;
begin
x:= Ord(arg)– CKey;
if x<32 then x:= x+256–32;
Decrypt:= Char(x);
end;
{––––– Шифрование строки –––––}
procedure EncryptStr(var arg: string);
var k: integer;
begin
for k:=1 to Length(arg) do
arg[k]:= Encrypt(arg[k]);
end;
{––––– Расшифровка строки –––––}
procedure DecryptStr(var arg: string);
var k: integer;
begin
for k:=1 to Length(arg) do