• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Разработать программу шифрования текстовых файлов

Programmer8

Ученик
Регистрация
16 Янв 2016
Сообщения
11
Реакции
0
Баллы
0
Разработать программу шифрования текстовых файлов

Программа должна выполнить следующие действия: организовать построчное чтение данных из файла, увеличить на 1 код каждого символа строки, записать строку в выходной файл, аналогичным образом выполнить расшифровку зашифрованного файла. Каждое действие оформляется как подпрограмма. Главная программа реализует только диалоговый цикл взаимодействия с пользователем.

Не поможете с данным заданием? Заранее благодарен.
 
Язык программирования какой?
 
Не поможете с данным заданием? Заранее благодарен.
Нет.
Потому как Вы, проявив стойкость и мужество, не выдали нам Тайну Языка Программирования, на котором должна быть написана программа.
Преклоняемся.
 
Язык программирования Pascal
 
Алгоритм для функции шифрования следующий:
1) Заводите необходимое количество переменных для работы с файлами, символами и числами.
2) Связываете файловые переменные с соответствующими текстовыми файлами.
3) В цикле организуете считывание из исходного файла символов до тех пор, пока не конец файла.
3.1) Преобразуете символ в код символа, увеличиваете его на 1 и преобразуете обратно.
3.2) Записываете полученный символ в результирующий файл.
4) конец.

Алгоритм для функции дешифровки следующий:
1) Заводите необходимое количество переменных для работы с файлами, символами и числами.
2) Связываете файловые переменные с соответствующими текстовыми файлами.
3) В цикле организуете считывание из исходного файла символов до тех пор, пока не конец файла.
3.1) Преобразуете символ в код символа, уменьшаете его на 1 и преобразуете обратно.
3.2) Записываете полученный символ в результирующий файл.
4) конец.
 
Да ладно, делов-то на пять минут:
Код:
Var
 f1,f2:Text;
 N1,N2:String;
 ED:byte;

Function Encode_String(S:String):String;
var
 i,L:byte;
 S1:String;
begin
 S1:='';
 L:=Length(S);
 for i:=1 to L do S1:=S1+Chr(Ord(S[i])+1);
 Encode_String:=S1;
end;

Function Decode_String(S:String):String;
var
 i,L:byte;
 S1:String;
begin
 S1:='';
 L:=Length(S);
 for i:=1 to L do S1:=S1+Chr(Ord(S[i])-1);
 Decode_String:=S1;
end;

Procedure Encode_File(Nm1,Nm2:String);
var S:String;
begin
 Assign(f1,Nm1);
 Reset(f1);
 Assign(f2,Nm2);
 Rewrite(f2);
 Repeat
  Readln(f1,S);
  Writeln(f2,Encode_String(S));
 Until EoF(f1);
 Close(f1);
 Close(f2);
end;

Procedure Decode_File(Nm1,Nm2:String);
var S:String;
begin
 Assign(f1,Nm1);
 Reset(f1);
 Assign(f2,Nm2);
 Rewrite(f2);
 Repeat
  Readln(f1,S);
  Writeln(f2,Decode_String(S));
 Until EoF(f1);
 Close(f1);
 Close(f2);
end;

Begin
 Repeat
  Writeln('Choose the action: 1 - encode');
  Writeln('                   2 - decode');
  Writeln('                   0 - quit');
  Readln(ED);
  Case ED of
   1: begin
       write('Initial file name (full path): ');
       readln(N1);
       write('Encoded file name (full path): ');
       readln(N2);
       Encode_File(N1,N2);
      end;
   2: begin
       write('Encoded file name (full path): ');
       readln(N1);
       write('Decoded file name (full path): ');
       readln(N2);
       Decode_File(N1,N2);
      end;
  end;
  Writeln;
 Until ED=0;
End.
 
Лёш, тут есть одна хитрость: нужно обходить преобразования кодов перевода строки. Поэтому лучше как у меня, построчно.
 
Ну да, EOL надо пропускать :)
 
Огромное спасибо вам:) Особенно Vladimir_S, проверил работает в точности как надо:)
 
Только вот что... сейчас подумал. Надо бы "обойти" 255-й символ ("я" в Windows-кодировке). Если такой попадется - катастрофа! Важно?
 
Владимир Игоревич, согласно алгоритму Цезаря, последняя буква алфавита меняется на первую при шифровании и наоборот при дешифровке. Так что почти наверняка это важно :)
 
Владимир Игоревич, согласно алгоритму Цезаря, последняя буква алфавита меняется на первую при шифровании и наоборот при дешифровке. Так что почти наверняка это важно :)
Тогда так:
Код:
Var
 f1,f2:Text;
 N1,N2:String;
 ED:byte;

Function Encode_String(S:String):String;
var
 i,L:byte;
 S1:String;
begin
 S1:='';
 L:=Length(S);
 for i:=1 to L do
  if Ord(S[i])=255 then
   S1:=S1+Chr(1)
  else
   S1:=S1+Chr(Ord(S[i])+1);
 Encode_String:=S1;
end;

Function Decode_String(S:String):String;
var
 i,L:byte;
 S1:String;
begin
 S1:='';
 L:=Length(S);
 for i:=1 to L do
  if Ord(S[i])=1 then
   S1:=S1+Chr(255)
  else
   S1:=S1+Chr(Ord(S[i])-1);
 Decode_String:=S1;
end;

Procedure Encode_File(Nm1,Nm2:String);
var S:String;
begin
 Assign(f1,Nm1);
 Reset(f1);
 Assign(f2,Nm2);
 Rewrite(f2);
 Repeat
  Readln(f1,S);
  Writeln(f2,Encode_String(S));
 Until EoF(f1);
 Close(f1);
 Close(f2);
end;

Procedure Decode_File(Nm1,Nm2:String);
var S:String;
begin
 Assign(f1,Nm1);
 Reset(f1);
 Assign(f2,Nm2);
 Rewrite(f2);
 Repeat
  Readln(f1,S);
  Writeln(f2,Decode_String(S));
 Until EoF(f1);
 Close(f1);
 Close(f2);
end;

Begin
 Repeat
  Writeln('Choose the action: 1 - encode');
  Writeln('                   2 - decode');
  Writeln('                   0 - quit');
  Readln(ED);
  Case ED of
   1: begin
       write('Initial file name (full path): ');
       readln(N1);
       write('Encoded file name (full path): ');
       readln(N2);
       Encode_File(N1,N2);
      end;
   2: begin
       write('Encoded file name (full path): ');
       readln(N1);
       write('Decoded file name (full path): ');
       readln(N2);
       Decode_File(N1,N2);
      end;
  end;
  Writeln;
 Until ED=0;
End.
 
Могу дать готовый шифровирус.
Не уверен что он работает по заданному алгоритму, но зашифрует все наработки на компе препода. :)))
 
Могу дать готовый шифровирус.
Не уверен что он работает по заданному алгоритму, но зашифрует все наработки на компе препода. :)))
Коля, обсуждение способов суицида законодательством запрещено! :D
 
Ну желательно конечно бы без катастроф, если вам не сложно то можете поправить?:)
 
Да я уже увидел:) Еще раз большое Вам спасибо!
 
Назад
Сверху