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

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

如何在 Delphi 中正确应用文件 encryption/decryption 机制?

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

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

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;

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

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

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

“简单的异或加密”不会提高应用程序的安全性。确保添加一条注释,通知任何 reader 这不会带来任何安全好处,因为它可能会使其他开发人员感到困惑,认为它提高了抵御攻击者的门槛。如果这是一个安全系统,那么您需要使用 AES 进行加密或使用 SHA-256/SHA3 进行哈希处理,或使用 PBKDF2/Scrypt 进行密码存储。

话虽这么说,GitHub 搜索很强大,这里是一些 delphi 混淆位的代码: https://github.com/EonaCat/NightBitsEncryptor/blob/master/NightBitsEncryptor.pas

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