【发布时间】:2012-02-28 12:58:03
【问题描述】:
我正在尝试实现一种简单的文本文件加密技术,并且我正在使用以下代码来执行此操作。代码不是我写的,我只是用谷歌搜索了一下。加密技术似乎非常简单、简洁且易于实施。我看到它只有一个功能可以即时进行加密和解密。只需传递密钥即可解决问题。但是,我只是想知道,我是否可以检查用户传递的密钥是否正确。目前它只会根据传递的密钥加密/解密文本文件。但是没有机制来检查我们是否使用正确的密钥解密。无论我们传递什么密钥,它都会被解密,但它不可读。知道如何解决这个问题..?
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;
【问题讨论】:
-
不是我,但是这种加密方式不是很安全,不值得投资。它比加密更容易混淆。至于你真正的问题:没有办法,因为你没有真正的密钥系统可以在不包含秘密部分的情况下安全地进行身份验证。
-
@jimsweb 这是我很久以前写的东西,如果我没记错的话它是用 D7 写的,下载源代码 + bin 版本,玩得开心! delphigeist.com/2010/09/…
-
我一般使用 dcpcrypt 的 AES 加密
-
@jimsweb,你应该直接问这个,不要让读者猜测意图。显然,您有两个不同的问题,后一个(使用多字母替换变换校验和)我觉得很有趣。请分而治之
标签: delphi delphi-7 delphi-2010