问题描述
functionUncryptStr(Src,Key:String):string;//对字符串解密(Src:源Key:密匙)varKeyLen:Integer;KeyPos:Integer;offset:Integer;dest:string;SrcPos:Integer;SrcAsc:Integer;TmpSrcAsc:Integer;beginifTrim(Src)=''thenbeginResult:='';Exit;end;KeyLen:=Length(Key);ifKeyLen=0thenkey:='delphi';KeyPos:=0;offset:=StrToInt('$'+copy(src,1,2));SrcPos:=3;repeatSrcAsc:=StrToInt('$'+copy(src,SrcPos,2));ifKeyPos<KeyLenThenKeyPos:=KeyPos+1elseKeyPos:=1;TmpSrcAsc:=SrcAscxorOrd(Key[KeyPos]);ifTmpSrcAsc<=offsetthenTmpSrcAsc:=255+TmpSrcAsc-offsetelseTmpSrcAsc:=TmpSrcAsc-offset;dest:=dest+chr(TmpSrcAsc);offset:=srcAsc;SrcPos:=SrcPos+2;untilSrcPos>=Length(Src);Result:=Dest;end;
解决方案
解决方案二:
DELHPI示例:UncryptStr('0D0B111310EC05','')调用应该解释成源码为:bjfaxt不知道C#调用后,解释成什么。
解决方案三:
直译过来如下,是否有误,这个你自己调试吧staticstringUncryptStr(stringSrc,stringKey){//对字符串解密(Src:源Key:密匙)intKeyLen,KeyPos,offset;stringdest="";intSrcPos,SrcAsc,TmpSrcAsc;stringResult=String.Empty;if(!String.IsNullOrEmpty(Src)){KeyLen=Key.Length;if(KeyLen==0)Key="delphi";KeyPos=0;offset=Convert.ToInt32(Src.Substring(0,2));SrcPos=3;do{SrcAsc=Convert.ToInt32(Src.Substring(SrcPos-1,2));if(KeyPos<KeyLen)KeyPos=KeyPos+1;elseKeyPos=1;TmpSrcAsc=SrcAsc^Convert.ToChar(Key[KeyPos]);if(TmpSrcAsc<=offset)TmpSrcAsc=255+TmpSrcAsc-offset;elseTmpSrcAsc=TmpSrcAsc-offset;dest=dest+Convert.ToChar(TmpSrcAsc);offset=SrcAsc;SrcPos=SrcPos+2;}while(SrcPos>=Src.Length);Result=dest;}returnResult;}