繁体   English   中英

如何在没有第三方包的情况下在 Delphi 中应用简单的 XOR 加密/解密机制?

[英]How can I apply a simple XOR encryption/decryption mechanism in Delphi with no third party packages?

如何在 Delphi 中正确应用文件加密/解密机制?

我发现了一个非常古老的来源,据说它教如何做到这一点,但使用字符串。 在我之前的问题之后,这似乎不是正确的方法。 相反,我应该执行字节操作。 这是我的旧消息来源的建议:

1-) 使用旧绑定的 C function 读取文件:

function ReadFile(path: String): AnsiString;
var
  file: File;
  type: Byte;
begin
  type:= FileMode;
  try
    FileMode := 0;
    AssignFile(file, path);
{$I-}
    Reset(file, 1);
{$I+}
    if IOResult = 0 then
      try
        SetLength(Result, FileSize(file));

        if Length(Result) > 0 then

        begin
{$I-}
          BlockRead(file, Result[1], Length(Result));
{$I+}
          if IOResult <> 0 then
            Result := '';
        end;
      finally
        CloseFile(file);
      end;
  finally
    FileMode := type;
  end;
end;

2-) 在这个巨大的 AnsiString 上逐个字符地应用 XOR 操作,如下所示:

 function Xor(Buffer: String; Key: integer): String;
  var
    i, c, x: integer;
  begin
    for i := 1 to Length(Buffer) do
    begin
      c := integer(Buffer[i]);
      x := c xor Key;
      Result := Result + Char(x);
    end;
  end;

但是之后的问题,也是我的源代码没有显示的问题,是如何将这个转换后的字符串转换回字节,这样我就可以拥有一个功能资源来写回一个新的解密文件。

显然这不是加密和解密文件的正确方法。 有人可以向我解释正确的正确方法:

读取一个文件,应用一个基本的 XOR 加密机制,然后能够再次读取这个文件,解密它并使用这个 VALID 二进制(DLL,EXE)数据写回一个新的解密文件?

“简单异或加密”不会提高应用程序的安全性。 请务必添加一条评论,告知任何读者这不会带来安全好处,因为它可能会使其他开发人员误以为它提高了针对攻击者的门槛。 如果这是一个安全系统,那么您将需要使用 AES 进行加密或使用 SHA-256/SHA3 进行散列,或使用 PBKDF2/Scrypt 进行密码存储。

话虽如此,GitHub 搜索功能强大,这里有一些 delphi 代码混淆位: https://github.com/EonapabCat/Night

上面的代码虽然晦涩难懂,但却是安全的,绝不能用作安全系统。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM