一个TStringList的问题
我在用TStringList处理文件时遇到了问题:
我先把一个String经过加密写入到文件中,然后再用TStringList读出,解密,却出现了错误:本来一个string被读出时成了两个string,解密出来的也不是原来的字符串了:(
经测试,单纯的加密解密函数没有问题,大家说问题会出在哪里?
下面是我得加密解密函数,应该没什么问题吧?
{
加解密函数,key是秘钥,SeedA和SeedB是种子.bEncrypt为true的时候加密,false解密.
}
function Crypt(const s: string; Key: Word; const bEncrypt: boolean = True): string;
var
i: integer;
ps, pr: ^byte;
begin
SetLength(Result, Length(s));
ps := @s[1];
pr := @Result[1];
for i := 1 to length(s) do
begin
pr^ := ps^ xor (Key shr 8);
if bEncrypt then
Key := (pr^ + Key) * SeedA + SeedB
else
Key := (ps^ + Key) * SeedA + SeedB;
pr := pointer(integer(pr) + 1);
ps := pointer(integer(ps) + 1);
end
end;