Advertisement
Abaduaber

IVER_3

Feb 25th, 2013
348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.45 KB | None | 0 0
  1. {$I+} {$Q-}
  2. Var
  3.     S, K, FN: String; {В S - исходная строка, которую будем шифровать, в K - вводимый ключ.}
  4.     {В FN вводится имя файла.}
  5.     FD: Text;
  6.     {Файловый дескриптор}
  7.     I, C: Integer;
  8.     {I - индекс для шифровки, C - ввод в начале программы.}
  9.  
  10. Procedure Encode;
  11. Begin
  12.     {Считываем строку и ключ}
  13.     Write('Input string to encode: ');
  14.     ReadLn(S);
  15.     Write('Input key: ');
  16.     ReadLn(K);
  17.     {Пока длина ключа меньше длины строки, приклеиваем копию текста ключа к самому ключу}
  18.     While Length(K) < Length(S) Do K:= K + K;
  19.     {Каждый символ входной строки увеличиваем на код соответствующего символа ключа}
  20.     For I:= 1 To Length(S) Do Inc(S[I], Ord(K[I]));
  21.     {Выводим закодированную строку. Она в переменной S, была не закодированная, а стала закодирована}
  22.     WriteLn('Encoded string: ', S);
  23.     {Просим ввести имя файла, куда сохраним закодированную строку и вводим имя файла}
  24.     Write('Input file name to save encoded data: ');
  25.     ReadLn(FN);
  26.     {Открываем файл, двумя командами, потом пишем строку в файл, и закрываем его}
  27.     Assign(FD, FN);
  28.     ReWrite(FD);
  29.     WriteLn(FD, S);
  30.     Close(FD);
  31. End;
  32.  
  33. Procedure Decode;
  34. Begin
  35.     {Просим ввести имя файла с закодированной строкой}
  36.     Write('Input encoded data file name: ');
  37.     ReadLn(FN);
  38.     {Открываем файл с введенным в строку FN именем, читаем зашифр. строку в переменную S, закрываем файл}
  39.     Assign(FD, FN);
  40.     Reset(FD);
  41.     ReadLn(FD, S);
  42.     Close(FD);
  43.     {Выводим зашифрованную строку, и предлагаем ввести ключ}
  44.     WriteLn('Encoded string: ', S);
  45.     Write('Input key: ');
  46.     {Читаем ключ}
  47.     ReadLn(K);
  48.     {Пока длина ключа меньше длины строки, приклеиваем копию текста ключа к самому ключу}
  49.     While Length(K) < Length(S) Do K:= K + K;
  50.     {Каждый символ входной строки уменьшаем на код соответствующего символа ключа}
  51.     For I:= 1 To Length(S) Do Dec(S[I], Ord(K[I]));
  52.     {Выводим результат, который тоже в переменной S}
  53.     WriteLn('Decoded string: ', S);
  54. End;
  55.  
  56. Begin
  57.     {Начинаем главный цикл}
  58.     Repeat
  59.       {Выводим подсказку для ввода и читаем введенное число}
  60.       WriteLn('input 0 to exit, 1 to encode, another value - to decode');
  61.       ReadLn(C);
  62.       {В зависимости от введенного содержимого C:}
  63.       Case C Of
  64.         0: Break; {Если 0 - выйти из цикла}
  65.         1: Encode; {Если 1 - вызвать процедуру шифрования}
  66.         Else Decode; {Если что-то другое - вызвать процедуру дешифрации}
  67.       End;
  68.     Until C = 0;
  69. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement