Шифрование двух текстов - 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.
Объяснение кода листинга программы
- В процедуре codec переменной s присваивается значение строки, которую необходимо зашифровать.
- Переменная keystr содержит ключ шифрования, который представлен в виде строки.
- Переменная count инициализируется значением 0, которое будет использоваться в цикле для подсчета количества символов в строке и ключе.
- Цикл for проходит по каждому символу строки s.
- Если count равно длине keystr + 1, то это означает, что используется следующий символ ключа.
- Символ строки сдвигается на один символ влево, а символ ключа сдвигается на один символ вправо.
- Полученные байты преобразуются обратно в символы и записываются обратно в строку на место исходного символа.
- После завершения цикла, переменная count инициализируется значением 1.
- Программа повторяется, пока не будет заполнена вся строка.
- После шифрования исходной строки, программа запрашивает новую строку для шифрования.
- Процедура codec вызывается для шифрования новой строки.
- Зашифрованная строка выводится на экран.
- Затем выполняется декодирование зашифрованной строки.
- Программа завершается после вывода расшифрованной строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д