Function UncrypKey(Src:String; Key:String):string;
var
  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:='Think Space';
  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;

解决方案 »

  1.   

    我算是看明白了,但我不会vb
    和你讲一讲,希望对你有帮助。
    这个函数应该是用来加密的。
    src应该是未加密的字符串,每两位数是一个16进制数。key是加密要用到的字符串。
    从src的第三位数开始,每次取两位数,SrcAsc:=StrToInt('$'+ copy(src,SrcPos,2))就是将取出的数转为10进制数,然后把这个数与key的对应字节的ascii码值异或,对应的关系为copy(src,3,2)对应key[1],copy(src,5,2)对应key[2],依次类推,然后将这个数减去上次得到的数,如果这个数比上次的数小,再加255,得到的值再把他转换为ascii码为这个值的字符,加在结果上。第一个“上次的值”是StrToInt('$'+ copy(src,SrcPos,2));下一个“上次的值”就是本次算出的值。讲了一堆,也不知道你明白没有,我自己感觉也有点乱,呵呵!
    有什么再问吧。
      

  2.   

    转为10进制
    在vbscript中怎么转
      

  3.   

    script 中有可以转化的么? 好像没听过 up 一下