public static String AddpassLock(String spass)
  {
    if(spass==null ||spass.equals(""))
     spass="systemPassword";
      String ss="";
     byte[] b=spass.getBytes();
      byte bt;
  for(int i=0;i<b.length;i++)
  {
    b[i]+=(b.length-(i+9));
    if(ss.equals(""))
      ss=Byte.toString(b[i]); 
    else
      ss+="-"+Byte.toString(b[i]);
  }
  return ss;  }

解决方案 »

  1.   


    Public Function AddpassLock(Byval spass As String) As String
    Dim ss As String, b() As Byte, i As Integer
      If spass = "" Then spass = "systemPassword"
     
      ss=""  b = spass,   For i = 0 To Ubound(b)
          b(i)= b(i) + Ubound(b) - i - 9
          If ss = "" Then
            ss = Chr(b(i)) 
          else
            ss = ss & "-" & Chr((b(i))
          End If
      Next i
      AddpassLock = ssEnd Function
      

  2.   

    楼上的代码有点问题b[i]+=(b.length-(i+9));
    b(i)= b(i) + Ubound(b) - i - 9.length是数组的长度,不是上界
      

  3.   

    下标0起始,元素数是Ubound(b)-1另外我觉得
    Byte.toString(b[i])
    不是Chr(b(i))吧
    虽然不知道是什么语言
      

  4.   

    晕,错了,下标0起始,元素数是Ubound(b)+1
      

  5.   

    LZ终于露面了,你部说清楚什么语言,然我猜得好辛苦明显不是.NET的,
    我猜是Java的,查了下Java的API文档
    果然有Byte.toString(byte b)这么个静态方法
    就是转为十进制字符串那么
    Byte.toString(b[i])
    应该是CStr(b(i))吧,或者直接连接到字符串,自动转换
      

  6.   

    byte与Integer运算以后,结果是Integer,再赋给byte,当然溢出了
    先用CByte转换一下
      

  7.   

    呵呵,抱歉,忘了说是JAVA的了
      

  8.   

    上面那段需要和这段ASP里面的代码对应
    Function jian(tempstr)
    if tempstr <> "" then 
    dim s_r,ss,str(),b(),d_i
    s_r=""
    ss=Split(tempstr,"-")
    d_i=UBound(ss)
    ReDim b(d_i)
    ReDim str(d_i)
    for i=0 to d_i b(i)=CByte(ss(i))
    Next

     for i=0 to d_i
    b(i)= b(i)-(d_i+1-(i+9))
    str(i)=Chr(b(i))
    Next
    jian=Join(str)
    else
    Response.redirect "err.htm" 
    end if
    end Function
    也就是说那段代码返回的值在这段asp里的代码还原
      

  9.   

    //str(i)=Chr(b(i))
    你能保证都是单字节字符吗?那么
    b = spass
    这一句应改为
    b = strconv(spass,vbFromUnicode)
      

  10.   

    [from Java API DOC]String MethodgetBytes() 
              
    Encodes this String into a sequence of bytes using the platform's default charset, storing the result into a new byte array
      

  11.   

    代码我也写了,但
    byte[] b=spass.getBytes();
    Byte.toString
    两处碰到问题,第一个猜对了,保留为0的字节没意义
    第二个我写的是转为十六进制字符串
    吃不准,所以没敢贴出来,再看,已被抢先了,呵呵