Inno设置:Ord功能或同等功能?

时间:2011-06-20 22:07:00

标签: encryption inno-setup pascal

我正在使用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)

任何解决方案?

1 个答案:

答案 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}