простое шифрование текстового файла на основе ключа

Я пытаюсь реализовать простую технику шифрования текстовых файлов и использую для этого следующий код. Код написан не мной, я просто погуглил и получил его. Техника шифрования кажется довольно простой, лаконичной и легко реализуемой. Я вижу, что в нем есть только одна функция, которая может выполнять шифрование и дешифрование на лету. Просто передайте ключ, и все будет сделано. Однако я хотел бы знать, возможно ли проверить, правильно ли передан ключ пользователем или нет. В настоящее время он просто шифрует / расшифровывает текстовый файл на основе переданного ключа. Но нет никакого механизма, чтобы проверить, расшифровываем мы с правильным ключом или нет. Какой бы ключ мы ни передали, он будет расшифрован, но не будет доступен для чтения. Есть идеи, как решить эту проблему?

procedure TEnDeCrypt.EnDecryptFile(pathin, pathout: string; Chave: Word);
var
  InMS, OutMS: TMemoryStream;
  cnt: Integer;
  C: byte;
begin
  InMS  := TMemoryStream.Create;
  OutMS := TMemoryStream.Create;
  try
    InMS.LoadFromFile(pathin);
    InMS.Position := 0;
    for cnt := 0 to InMS.Size - 1 DO
      begin
        InMS.Read(C, 1);
        C := (C xor not (ord(chave shr cnt)));
        OutMS.Write(C, 1);
      end;
    OutMS.SaveToFile(pathout);
  finally
    InMS.Free;
    OutMS.Free;
  end;
end;
7
задан Richard A 29 February 2012 в 02:18
поделиться