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

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

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

Код к задаче: «Шифрование двух текстов - Pascal ABC»

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.

9   голосов, оценка 3.778 из 5


СОХРАНИТЬ ССЫЛКУ