Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {$I+} {$Q-}
- Var
- S, K, FN: String; {В S - исходная строка, которую будем шифровать, в K - вводимый ключ.}
- {В FN вводится имя файла.}
- FD: Text;
- {Файловый дескриптор}
- I, C: Integer;
- {I - индекс для шифровки, C - ввод в начале программы.}
- Procedure Encode;
- Begin
- {Считываем строку и ключ}
- Write('Input string to encode: ');
- ReadLn(S);
- Write('Input key: ');
- ReadLn(K);
- {Пока длина ключа меньше длины строки, приклеиваем копию текста ключа к самому ключу}
- While Length(K) < Length(S) Do K:= K + K;
- {Каждый символ входной строки увеличиваем на код соответствующего символа ключа}
- For I:= 1 To Length(S) Do Inc(S[I], Ord(K[I]));
- {Выводим закодированную строку. Она в переменной S, была не закодированная, а стала закодирована}
- WriteLn('Encoded string: ', S);
- {Просим ввести имя файла, куда сохраним закодированную строку и вводим имя файла}
- Write('Input file name to save encoded data: ');
- ReadLn(FN);
- {Открываем файл, двумя командами, потом пишем строку в файл, и закрываем его}
- Assign(FD, FN);
- ReWrite(FD);
- WriteLn(FD, S);
- Close(FD);
- End;
- Procedure Decode;
- Begin
- {Просим ввести имя файла с закодированной строкой}
- Write('Input encoded data file name: ');
- ReadLn(FN);
- {Открываем файл с введенным в строку FN именем, читаем зашифр. строку в переменную S, закрываем файл}
- Assign(FD, FN);
- Reset(FD);
- ReadLn(FD, S);
- Close(FD);
- {Выводим зашифрованную строку, и предлагаем ввести ключ}
- WriteLn('Encoded string: ', S);
- Write('Input key: ');
- {Читаем ключ}
- ReadLn(K);
- {Пока длина ключа меньше длины строки, приклеиваем копию текста ключа к самому ключу}
- While Length(K) < Length(S) Do K:= K + K;
- {Каждый символ входной строки уменьшаем на код соответствующего символа ключа}
- For I:= 1 To Length(S) Do Dec(S[I], Ord(K[I]));
- {Выводим результат, который тоже в переменной S}
- WriteLn('Decoded string: ', S);
- End;
- Begin
- {Начинаем главный цикл}
- Repeat
- {Выводим подсказку для ввода и читаем введенное число}
- WriteLn('input 0 to exit, 1 to encode, another value - to decode');
- ReadLn(C);
- {В зависимости от введенного содержимого C:}
- Case C Of
- 0: Break; {Если 0 - выйти из цикла}
- 1: Encode; {Если 1 - вызвать процедуру шифрования}
- Else Decode; {Если что-то другое - вызвать процедуру дешифрации}
- End;
- Until C = 0;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement