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 *)
460