program CryptDemo_2; (*********************************) (*Шифрование строки текста случайной перестановкой символов.*) (* Turbo Pascal 3.xx *) (*********************************) const TestTxt1 = ?Мама мыла Машу мылом. Маша мыло не любила. ?#10; TestTxt2 = ?Шифрование перестановкой символов.?; FileName = ?DEMO.TXT?; var I : byte; C : char; Line : string [$FF]; CryptTab : array [1..255] of byte; F : text; begin TextBackGround (Black); (* шифруемый текст *) Line := TestTxt1 + TestTxt2; TextColor (Yellow); WriteLn (Line); (* ввод-вывод строки через файл *) TextColor (LightGreen); Assign (F, FileName); Rewrite (F); WriteLn (F, Line); Close (F); Reset (F); ReadLn (F, Line); Close (F); Erase (F); WriteLn (Line); (* восстановление строки *) Line := TestTxt1 + TestTxt2; (* рандомизация ключа шифрования *) Randomize; (* подготовка таблицы перестановок *) for I := 1 to Length (Line) do CryptTab [I] := Succ (Random (Length (Line))); (* шифрование перестановкой символов *) for I := 1 to Length (Line) do begin C := Line [I]; Line [I] := Line [CryptTab [I]]; Line [CryptTab [I]] := C end; TextColor (LightCyan); WriteLn (Line); (* дешифрирование перестановки символов *) for I := Length (Line) downto 1 do begin C := Line [I]; Line [I] := Line [CryptTab [I]]; Line [CryptTab [I]] := C end; TextColor (White); Write (Line); TextColor (LightGray); Writeln; Halt end. (* CryptDemo_2 *)