我正在使用inno设置来“加密”密码:
function XORcrypt(Value,Key: string): string;
var
p,k,pl,kl: integer;
begin
{very basic encryption, using bitwise XOR}
result:=Value;
pl:=Length(Value);
kl:=Length(Key);
if (pl>0) and (kl>0) then
begin
p:=1; k:=1;
while (p<=pl) do
begin
Result[p]:=Char(Ord(Value[p]) XOR Ord(Key[k]));
if k=kl then k:=1 else k:=k+1;
p:=p+1
end; {while}
end; {if}
end; {XORcrypt}
inno似乎不知道pascal函数 Ord ,它返回所请求字符的ASCII值(“C”为67)
任何解决方案?
答案 0 :(得分:3)
问题不是Ord()
而是Char()
您需要使用Chr()
。
function XORcrypt(Value,Key: String): String;
var
p,k,pl,kl: integer;
begin
{very basic encryption, using bitwise XOR}
result:=Value;
pl:=Length(Value);
kl:=Length(Key);
if (pl>0) and (kl>0) then
begin
p:=1; k:=1;
while (p<=pl) do
begin
Result[p]:=Chr(Ord(Value[p]) XOR Ord(Key[k]));
if k=kl then k:=1 else k:=k+1;
p:=p+1
end; {while}
end; {if}
end; {XORcrypt}