要翻译的代码为:
//解密函数
Function UncrypKey(Src:String; Key:String):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:='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.   

    换 java  的还可以,这个格式都有很大区别。
      

  2.   

    可以啊 
    要不先换成java的,然后在换成C#
      

  3.   

      //加密
            public string Encrypt(string src, string key)
            {
                int keyLen = key.Length;
                if (keyLen == 0)
                {
                    key = "Think Space";
                }            int keyPos = 0;
                int srcAsc = 0;            Random r = new Random();
                int offset = r.Next(256);            string dest = offset.ToString("X02");            byte[] valueBytes = Encoding.Default.GetBytes(src);
                byte[] keyBytes = Encoding.Default.GetBytes(key);             for (int srcPos = 0; srcPos < src.Length; srcPos++)
                {
                    srcAsc = (valueBytes[srcPos] + offset) % 255;
                    if (keyPos < key.Length)
                    {
                        keyPos = keyPos + 1;
                    }
                    else
                    {
                        keyPos = 1;
                    }
                    srcAsc = srcAsc ^ keyBytes[keyPos - 1];
                    dest = dest + srcAsc.ToString("X02");
                    offset = srcAsc;
                }
                return dest;
            }
            //解密
            public string Decrypt(string src, string key)
            {
                int keyLen = key.Length;
                if (keyLen == 0)
                {
                    key = "Think Space";
                }            int keyPos = 0;
                int srcAsc = 0;
                int tmpSrcAsc = 0;
                string dest = string.Empty;
                byte[] keyBytes = Encoding.Default.GetBytes(key);            int offset = int.Parse(src.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
                int scrPos = 2;
                while (scrPos < src.Length)
                {
                    srcAsc = int.Parse(src.Substring(scrPos, 2), System.Globalization.NumberStyles.HexNumber);
                    if (keyPos < keyLen)
                    {
                        keyPos = keyPos + 1;
                    }
                    else
                    {
                        keyPos = 1;
                    }
                    tmpSrcAsc = srcAsc ^ keyBytes[keyPos - 1];
                    if (tmpSrcAsc <= offset)
                    {
                        tmpSrcAsc = 255 + tmpSrcAsc - offset;
                    }
                    else
                    {
                        tmpSrcAsc = tmpSrcAsc - offset;
                    }
                    dest = dest + (char)tmpSrcAsc;
                    offset = srcAsc;
                    scrPos = scrPos + 2;
                }
                return dest;
            }