private function encode(byval s as string) as string '加密
if len(s) = 0 then exit function
dim buff() as byte
buff = strconv(s, vbfromunicode)
dim i as long
dim j as byte
dim k as byte, m as byte
dim mstr as string
mstr= "abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz"
dim outs as string
i = ubound(buff) + 1
outs = space(2 * i)
dim temps as string
for i = 0 to ubound(buff)
randomize time
j = cbyte(5 * (math.rnd()) + 0) '最大产生的随机数只能是5,不能再大了,再大的话,就要多用一个字节
buff(i) = buff(i) xor j
k = buff(i) mod len(mstr)
m = buff(i) \ len(mstr)
m = m * 2 ^ 3 + j
temps = mid(mstr, k + 1, 1) + mid(mstr, m + 1, 1)
mid(outs, 2 * i + 1, 2) = temps
next
encode = outs
end function上面代码里的m = m * 2 ^ 3 + j有什么特别的意义吗?为什么要*8和+j哦?

解决方案 »

  1.   

    这个是我以前写的,这个其实就是仿照base64结合xor进行编码,的m = m * 2 ^ 3 + j是为了解密以及保证编码后字串长度不至于太长的缘故,完整的代码在:
    http://blog.csdn.net/rainstormmaster/archive/2004/03/30/20346.aspx
      

  2.   

    请教前辈
    Private Function decode(ByVal s As String) As String '解密
        On Error GoTo myERR
        Dim i As Long
        Dim j As Byte
        Dim k As Byte
        Dim m As Byte
        Dim mstr As String
        mstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"
        Dim t1 As String, t2 As String
        Dim buff() As Byte
        Dim n As Long
        n = 0
        For i = 1 To Len(s) Step 2
            t1 = Mid(s, i, 1)
            t2 = Mid(s, i + 1, 1)
            k = InStr(1, mstr, t1) - 1
            m = InStr(1, mstr, t2) - 1
            j = m \ 2 ^ 3
            m = m - j * 2 ^ 3
            ReDim Preserve buff(n)
            buff(n) = j * Len(mstr) + k
            buff(n) = buff(n) Xor m
            n = n + 1
         Next
         decode = StrConv(buff, vbUnicode)
         Exit Function
    myERR:
         decode = ""
    End Function这个代码里buff(n) 是什么意思啊?还有ReDim Preserve buff(n)、 For i = 1 To Len(s) Step 2、还有其中得到了n是什么呢?
      

  3.   

    buff(n) 的意思是buff数组的第n+1个元素(默认vb数组下标从0开始)ReDim Preserve buff(n)的意思,ReDim是重定义数组大小,Preserve的含义是保留数组中原有数据For i = 1 To Len(s) Step 2,这个的意思是步长为2,从1循环到Len(s)
      

  4.   

    请问前辈buff(n)和buff(i)是不是同一个意思啊
      

  5.   

    //请问前辈buff(n)和buff(i)是不是同一个意思啊如果n=i的话