怎么为空时.解密不出来.报错..哪个高手帮下偶..急用..多谢.(30分)

W

wsc188

Unregistered / Unconfirmed
GUEST, unregistred user!
[red]
//加密
Function EncrypKey (Src:String; const Key:String='wanglongcong188'):string;
var
//idx :integer;
KeyLen :Integer;
KeyPos :Integer;
offset :Integer;
dest :string;
SrcPos :Integer;
SrcAsc :Integer;
TmpSrcAsc :Integer;
Range :Integer;

begin
KeyLen:=Length(Key);
//if KeyLen = 0 then key:='11';
// KeyPos:=0;
// SrcPos:=0;
SrcAsc:=0;
Range:=256;

Randomize;
offset:=Random(Range);
dest:=format('%1.2x',[offset]);
for SrcPos := 1 to Length(Src) do
begin
SrcAsc:=(Ord(Src[SrcPos]) + offset) MOD 255;
if KeyPos < KeyLen then KeyPos:= KeyPos + 1 else KeyPos:=1;
SrcAsc:= SrcAsc xor Ord(Key[KeyPos]);
dest:=dest + format('%1.2x',[SrcAsc]);
offset:=SrcAsc;
end;
Result:=Dest;
end;

//解密函数
Function UncrypKey (Src:String; const Key:String='wanglongcong188'):string;
var
idx :integer;
KeyLen :Integer;
KeyPos :Integer;
offset :Integer;
dest :string;
SrcPos :Integer;
SrcAsc :Integer;
TmpSrcAsc :Integer;
Range :Integer;

begin
KeyLen:=Length(Key);
//if KeyLen = 0 then key:='';
KeyPos:=0;
SrcPos:=0;
SrcAsc:=0;
Range:=256;
offset:=StrToInt('$'+ copy(src,1,2));
SrcPos:=3;
repeat
SrcAsc:=StrToInt('$'+ copy(src,SrcPos,2));
if KeyPos < KeyLen Then KeyPos := KeyPos + 1 else KeyPos := 1;
TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
if TmpSrcAsc <= offset then
TmpSrcAsc := 255 + TmpSrcAsc - offset
else
TmpSrcAsc := TmpSrcAsc - offset;
dest := dest + chr(TmpSrcAsc);
offset:=srcAsc;
SrcPos:=SrcPos + 2;
until SrcPos >= Length(Src);
Result:=Dest;
end;
[/red]
代码为上面..怎么当加密的为空时..加密可以用..
但就是解密不出来..还报错..报什么&quot;$&quot;..的错啊..
哪个可以指点下..可以帮我修改再发来上吗?..
可以解密就发分..多谢...
在线等...急用...
 
提示
为空的时间不用加密和解密了。
 
两个函数的开始就判断Src的长度(if Length(Src)>0),大于0进行加解密运算。
 
为空时不用加密或者用特殊字符来进行判断。
 
但是.我就要想当要加密的字符为空里也可以加、解密啊
哪个可以帮下吗?

多谢。。
 
要加密的字符为空格时是可以加密的(我试过),如果没有字符(即为空时)当然应该不可以加密,所以你调用时要保证src长度大于0这两个函数就可以运行成功。分清楚空和空格。
 
多谢你们三个了..
 
少少的几分..不好意思啊,
 
顶部