Шифрование двух текстов - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Не могу понять,как составить программу для шифрования текста. Суть в том,что изначально есть какой то текст,пользователь вводит второй текст. Далее берётся по первому символу из обоих текстов,переводится в двоичный код по кодировке Ascii, затем поэтапно складываются разряды у этих символов. В итоге выводится зашифрованный текст. Объясните,пожалуйста,как сделать такую программу.

Решение задачи: «Шифрование двух текстов»

textual
Листинг программы
Program Kursovaya;
//процедура-кодек, исходная и зашифрованная строка одна и та же
procedure codec(var s: string);
const keystr = 'Суперключ, не разгадать почти что.'; //ключ
var i, count: integer; //счётчики для строки и ключа
begin
  count := 0; //начальное значение, в данном случае 0 для удобства алгоритма
  for i := 1 to length(s) do //пробегаем по символам строки
    begin
      inc(count); //указадель ключа - на следующий его символ
      if count = length(keystr) + 1 then count := 1;
      //если длина строки больше длины ключа, ключ используем многократно
      s[i] := char(byte(s[i]) xor byte(keystr[count]));
      //xor кода символа строки с кодом символа ключа и запись полученного символа назад в строку
      //сначала соответствующие сиволы строки и ключа приводятся к типу byte,
      //затем к полученным байтам применяется поразрядно операция xor,
      //затем полученный байт снова приводится к типу char
      //и записывается на место исходного символа строки
    end;
end;
 
var str: string;
    i: integer;
 
begin
  writeln('Введите ваше сообщение'); //ввод строки
  readln(str);
  codec(str); //шифрование
  //вывод зашифрованной строки, для исключения конфликтов при выводе
  //вместо символов с кодом менее пробела выводится вопросительный знак
  writeln('Зашифрованное сообщение:'); //печать зашифрованного сообщения
  for i := 1 to length(str) do if str[i] < ' ' then write('?') else write(str[i]);
  writeln;
  codec(str); //декодирование
  writeln('Расшифрованное сообщение:'); //печать расшифрованного сообщения
  writeln(str);
  readln
end.

Объяснение кода листинга программы

  1. В процедуре codec переменной s присваивается значение строки, которую необходимо зашифровать.
  2. Переменная keystr содержит ключ шифрования, который представлен в виде строки.
  3. Переменная count инициализируется значением 0, которое будет использоваться в цикле для подсчета количества символов в строке и ключе.
  4. Цикл for проходит по каждому символу строки s.
  5. Если count равно длине keystr + 1, то это означает, что используется следующий символ ключа.
  6. Символ строки сдвигается на один символ влево, а символ ключа сдвигается на один символ вправо.
  7. Полученные байты преобразуются обратно в символы и записываются обратно в строку на место исходного символа.
  8. После завершения цикла, переменная count инициализируется значением 1.
  9. Программа повторяется, пока не будет заполнена вся строка.
  10. После шифрования исходной строки, программа запрашивает новую строку для шифрования.
  11. Процедура codec вызывается для шифрования новой строки.
  12. Зашифрованная строка выводится на экран.
  13. Затем выполняется декодирование зашифрованной строки.
  14. Программа завершается после вывода расшифрованной строки.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы