我正在尝试实现一个简单的文本文件加密技术,我正在使用以下代码进行操作。这段代码不是我编写的,我只是通过谷歌搜索得到了它。这种加密技术似乎非常简单、简洁和易于实现。我看到它只有一个函数可以在运行时进行加密和解密。只需传递密钥即可完成操作。然而,我想知道,是否有可能检查用户传递的密钥是否正确。目前它只会根据传递的密钥加密/解密文本文件。但是没有机制来检查我们是否使用正确的密钥进行解密。无论我们传递什么密钥,它都将被解密,但它将无法读取。有什么办法解决这个问题吗?
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;