Xor шифрование - Pascal
Формулировка задачи:
Доброго времени суток! Нужно написать программу xor шифрования строки другой строкой. Строка, которая будет шифроваться, вводится с клавиатуры, далее вводится ключ. Допустим строка "Привет Мир" и ключ "басков" должно получиться "басковбаск".
Решение задачи: «Xor шифрование»
textual
Листинг программы
procedure codec(var s: string; key: string);
var i, j: integer;
begin
if length(key) > 0
then begin
j := 1;
for i := 1 to length(s) do
begin
s[i] := char(byte(s[i]) xor byte(key[j]));
inc(j);
if j > length(key) then j := 1
end
end
else writeln('Ошибка: нулевая длина ключа.')
end;
var str, keystr: string;
begin
writeln('Введите строку:');
readln(str);
writeln('Введите ключ:');
readln(keystr);
writeln('Закодированная строка:');
codec(str, keystr);
writeln(str);
writeln('Раскодированная строка:');
codec(str, keystr);
writeln(str);
readln
end.
Объяснение кода листинга программы
- Объявление процедуры
codecс параметрамиsиkeyтипа string - Объявление переменных
iиjтипа integer - Проверка условия: если длина ключа (переменная
key) больше нуля, то выполняется следующий блок кода - Установка начального значения переменной
jравным 1 - Цикл от 1 до длины строки
s - Внутри цикла каждый символ строки
sизменяется посредством операции XOR (исключающее ИЛИ) с символом ключаkey, перемещаясь по ключу в циклическом порядке - Если индекс
jпревышает длину ключа, то он возвращается к начальному значению - Если длина ключа равна 0, выводится сообщение об ошибке
- Объявление переменных
strиkeystrтипа string - Ввод строки с клавиатуры и сохранение в переменную
str - Ввод ключа с клавиатуры и сохранение в переменную
keystr - Вывод строки
Закодированная строка: - Вызов процедуры
codecдля закодирования строки с использованием ключа - Вывод закодированной строки
- Вывод строки
Раскодированная строка: - Вызов процедуры
codecдля раскодирования строки с использованием ключа - Вывод раскодированной строки
- Ожидание ввода пользователя.