急急急,请教兄弟们算法问题,如何把一组10位流水号数字,转换为一组10位无规律数字,不能随便随机处理就算了,要求能够解码还原回来。比如一万条10位流水号,如何转换成一万条无序10位随机数,每个数都可以根据算法再还原回来。

解决方案 »

  1.   

    Function EncryptStr(Str As String, Seed As Integer) As String
    ‘加密    
    Dim i As Long
        Dim l As Long
        Dim r As String
        Dim c As Integer
        Dim Ev As Variant
        Dim Tmp As String
        
        Ev = Array(98, 156, 67, 2, 67, 271, 195, 50, 251, 58, 85)
        r = ""
        l = Len(Str)
        For i = 1 To l
            c = Asc(Mid(Str, i, 1)) Xor Ev(i Mod 10) Xor Seed
            Tmp = Hex(c)
            r = r & Tmp & Space(4 - Len(Tmp))
        Next
        EncryptStr = r
    End FunctionFunction DecryptStr(Str As String, Seed As Integer) As String
    ’解密    
    Dim i As Long
        Dim l As Long
        Dim r As String
        Dim c As Integer
        Dim Ev As Variant
        Dim Tmp As String
        r = ""
        Ev = Array(98, 156, 67, 2, 67, 271, 195, 50, 251, 58, 85)
        
        l = Len(Str)
        For i = 1 To l Step 4
            r = r & Chr(Val("&H" & Mid(Str, i, 4)) Xor Ev(((i + 3) \ 4) Mod 10) Xor Seed)
        Next
        DecryptStr = r
    End Function