Песни о Паскале | страница 86
>procedure EncryptStr(var arg: string);
>var k: integer;
>begin
> for k:=1 to Length(arg) do
> arg[k]:= Encrypt(arg[k]);
>end;
>{––––– Расшифровка строки –––––}
>procedure DecryptStr(var arg: string);
>var k: integer;
>begin
> for k:=1 to Length(arg) do
> arg[k]:= Decrypt(arg[k]);
>end;
> {––––– Главная программа –––––}
>var S: string;
> Oper: integer;
>begin
> repeat
> Write('Введите строку: '); Readln(S);
> Writeln('Укажите операцию: 1– шифровать,’+
> ’ 2– расшифровать,’+
> ’ Прочие – выход');
> Readln(Oper);
> case Oper of
> 1: EncryptStr(S);
> 2: DecryptStr(S);
> else Break;
> end;
> Writeln(S); { печатаем результат }
> until false;
>end.
Программа нуждается лишь в кратких пояснениях. Глобальная константа CKey содержит ключ шифра. Если со временем захотите сменить его, достаточно будет изменить константу и заново откомпилировать программу. Далее следуют описания двух функций: Encrypt и Decrypt – для шифрования и расшифровки символа. Процедуры EncryptStr и DecryptStr шифруют и расшифровывают строки, передаваемые им по ссылке VAR. И, наконец, в главной программе организован цикл для ввода шифруемой строки и кода выполняемой операции (Oper).
Откиньтесь в кресле и полюбуйтесь простотой блоков, составляющих эту программу! А во что бы мы превратили её, свалив в кучу эти простые алгоритмы? В заключение приведу протокол шифрования: пользователь ввел слово «pascal» и зашифровал его, получив слово «rcuecn». Затем ввел строку «rcuecn» и расшифровал её, получив назад данное мною слово.
>Введите строку: pascal
>Операции: 1 – шифровать, 2 – расшифровать, прочие – выход
>Введите операцию: 1
>rcuecn
>Введите строку: rcuecn
>Операции: 1 – шифровать, 2 – расшифровать, прочие – выход
>Введите операцию: 2
>pascal
>Операции: 1 – шифровать, 2 – расшифровать, прочие – выход
>Введите операцию: 3
Вряд ли я удержу вас от испытания столь полезного изделия. Во избежание ошибок, шифруйте строки небольшой длины. Рекомендую также хотя бы разок пройти программу по шагам.
• В памяти компьютера символы представлены своими кодами – числами.
• Общее количество символов составляет 256, из них первые 32 – это управляющие, а остальные – видимые символы.
• Для преобразования числового кода в символ применяют функцию Char. Для обратного превращения – символа в число – пользуются функцией Ord..
• Паскаль «знает» о том, что символы кодируются числами, поэтому в счетчике цикла FOR допустимы символьные переменные, а в метках оператора CASE – символьные константы.