Листинг 12.21.
Функция дешифрования строки с помощью ключа и криптограммы
function TfmEncryptingAutoKey.DecryptString(strDecryptMsg: String;
var strKey: String): String;
var
i: Integer;
begin
for i := 1 to Length(strDecryptMsg) do
if strDecryptMsg[i] in RusLetters then
begin
strKey := strKey + strDecryptMsg[i];
strDecryptMsg[i] := Chr((((Ord(strDecryptMsg[i]) –
Ord(\'А\')) – (Ord(strKey[1]) – Ord(\'А\'))) + 64) mod 64 +
Ord(\'А\'));
Delete(strKey, 1, 1);
end;
Result := strDecryptMsg;
end;
Обработчики событий OnClick вызывают функцию EncryptDecrypt с необходимыми параметрами. У этой функции всего три параметра. Первый указывает на источник текста сообщения, требующего преобразования, второй указывает на приемник преобразованного текста сообщения. Последний параметр определяет тип преобразования текста сообщения. Если он равен True, то текст сообщения шифруется и помещается в приемник. В противном случае текст сообщения дешифруется и также помещается в приемник. Это происходит следующим образом. Сначала получается ключ, при помощи которого будет осуществляться преобразование текста сообщения. Если ключ некорректен, то выдаем соответствующее предупреждение и больше ничего не делаем. Если ключ корректен, то в зависимости от последнего параметра вызываем соответствующую функцию преобразования для каждой строки источника текста сообщения и добавляем результат в приемник (листинг 12.22).