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