![](/img/trans.png)
[英]How can I convert this XOR-encryption function from Delphi to C#?
[英]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.