program CryptDemo_7; (****************************) (*Шифрование строки текста заменой части символов.*) (* Turbo Pascal 3.xx *) (****************************) const TestTxt1 = ?Мама мыла Машу мылом. Маша мыло не любила. ?#10; TestTxt2 = ?Шифрование заменой символов.?; var I : byte; C : char; Line : string [$FF]; ShiftTab : array [1..255] of byte; (*—————————————————————————————————————-*) procedure ChangeCharNum (var C : char); (************************) (* Смена номера символа *) (************************) begin case C of #007..#010: C := Chr (Ord (C) + 243); #013 : C := #254; #026 : C := #255; #250..#253: C := Chr (Ord (C) - 243); #254 : C := #013; #255 : C := #026 end; Exit end; (* ChangeCharNum *) (*—————————————————————————————————————-*) begin TextBackGround (Black); (* шифруемый текст *) Line := TestTxt1 + TestTxt2; TextColor (Yellow); WriteLn (Line); (* рандомизация ключа шифрования *) Randomize; (* подготовка таблицы сдвигов *) for I := 1 to Length (Line) do ShiftTab [I] := Random (250); (* шифрование заменой символов *) for I := 1 to Length (Line) do begin ChangeCharNum (Line [I]); if Line [I] < #250 then Line [I] := Chr ((Ord (Line [I]) + 250 - ShiftTab [I]) mod 250); ChangeCharNum (Line [I]) end; TextColor (LightCyan); WriteLn (Line); (* дешифрирование замены символов *) for I := 1 to Length (Line) do begin ChangeCharNum (Line [I]); if Line [I] < #250 then Line [I] := Chr ((Ord (Line [I]) + ShiftTab [I]) mod 250); ChangeCharNum (Line [I]) end; TextColor (White); Write (Line); TextColor (LightGray); WriteLn; Halt end. (* CryptDemo_7 *)