加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 基于密钥的简单文本文件加密

发布时间:2020-12-15 04:12:34 所属栏目:大数据 来源:网络整理
导读:我正在尝试实现一个简单的文本文件加密技术,我正在使用以下代码来执行此操作.代码不是我写的,我只是用Google搜索并得到它.加密技术似乎非常简单,简洁且易于实现.我看到它只有一个功能可以动态地进行加密和解密.只需传递密钥即可.但是,我只是想知道,我是否可
我正在尝试实现一个简单的文本文件加密技术,我正在使用以下代码来执行此操作.代码不是我写的,我只是用Google搜索并得到它.加密技术似乎非常简单,简洁且易于实现.我看到它只有一个功能可以动态地进行加密和解密.只需传递密钥即可.但是,我只是想知道,我是否可以检查用户是否传递了密钥是否正确.目前,它只是根据传递的密钥加密/解密文本文件.但是没有机制来检查我们是否使用正确的密钥进行解密.无论我们传递什么密钥,它都会被解密,但它不可读.知道如何解决这个问题..?
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;

解决方法

使用散列算法在纯文本上生成校验和,并将其存储在加密文件的开头.

您可以通过散列解密的文本来验证密钥,并确保校验和匹配.

如果使用强哈希算法(如SHA256)生成校验和,则用户很难自动执行暴力攻击,因为它的计算成本很高.

为确保文件完好无损,您可能还希望在加密文件上存储校验和,并将其存储在文件头中.否则,将无法区分无效密码和截断文件.

我通常使用Blowfish加密算法,可从多个来源获得Delphi.河豚没有已知的弱点,相当紧凑和快速.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读