Программа реализована в среде Turbo Pascal 7.0. Длина блока шифра перестановки равняется 8 символам. Ключ вводится пользователем.
Текст программы (LR1.pas)
Program Shifr_Perestanovka;
uses crt;
type ftype = text;
var
fs,fe,fd: ftype;
s, e, d, k: string[8];
key: array [1..8] of byte;
ish,zash,desh: string;
i,j,L,N,numero,code: integer;
m: char; fl:boolean; t:real; br:integer;
begin
clrscr;
writeln (' Шифровка/Дешифровка методом перестановки ');
writeln ('1 - Шифровка');
writeln ('2 - Дешифровка');
writeln ('0 - Выход');
repeat
m:=readkey;
fl:=true;
if (m='1') or (m='2') then
begin
repeat
write ('Введите ключ без повторов из 8 цифр: ');
readln(k);
val(k,t,br);
if br<>0 then writeln('Vvedi chislo');
until br=0;
while fl=true do
if length(k)<>8 then
begin
writeln('Ошибка. Повторите ввод');
write ('Введите ключ без повторов из 8 цифр: ');
readln(k);
val(k,t,br);
if br<>0 then writeln('Vvedi chislo');
end
else
fl:=false;
for i:=1 to 8 do
begin
val(k[i],numero,code);
key[i]:=numero;
end;
end;
case m of
'1':
begin
assign (fs,'ishodn.txt'); reset(fs);
assign (fe,'zashifr1.txt'); rewrite(fe);
while not eof(fs) do
begin
zash:='';
readln (fs,ish);
L:=length(ish) mod 8;
if L>0 then
for i:=1 to 8-L do ish:=ish+' ';
L:=length(ish) div 8;
N:=1;
for i:=1 to L do
begin
s:=copy(ish,N,8);
for j:=1 to 8 do e[key[j]]:=s[j];
N:=N+8;
for j:=1 to 8 do zash:=zash+e[j];
end;
if not eof(fs) then writeln(fe,zash)
|
|
else write(fe,zash);
end;
close(fs); close(fe);
writeln('Текст зашифрован');
end;
'2':
begin
assign (fe,'zashifr1.txt'); reset(fe);
assign (fd,'desh1.txt'); rewrite(fd);
while not eof(fe) do
begin
desh:='';
readln(fe,zash);
L:=length(zash) div 8;
N:=1;
for i:=1 to L do
begin
e:=copy(zash,N,8);
for j:=1 to 8 do d[j]:=e[key[j]];
N:=N+8;
for j:=1 to 8 do desh:=desh+d[j];
end;
if not eof(fe) then writeln(fd,desh)
else write(fd,desh);
end;
close(fe); close(fd);
writeln('Текст дешифрован');
end;
end;
until m='0';
end.
Исходный текст (ishodn.txt)
Программирование - процесс создания компьютерных программ.
По известному выражению Никлауса Вирта «Программы = алгоритмы + структуры данных»
иными словами, ключевыми непосредственными задачами программирования являются создание
и использование алгоритмов и структур данных.В более широком смысле под программированием
понимают весь спектр деятельности, связанный с созданием и поддержанием в рабочем состоянии
программ - программного обеспечения. Эта инженерно-техническая дисциплина называется
«программная инженерия». Сюда входят анализ и постановка задачи, проектирование программы,
построение алгоритмов, разработка структур данных, написание текстов программ, отладка
и тестирование программы (испытания программы), документирование, настройка (конфигурирование),
доработка и сопровождение.