怎么给密码加密,有现成的简单的加码函数更佳。

解决方案 »

  1.   

    ======================
    加密函数(支持中文)
    ======================
    Public Function GetCode(ByVal STRValue As String) As String
        Randomize
        Dim ll As Integer
        Dim AscNumber As Integer
        Dim i As Integer
        Dim hh As String
        Dim ss As String
        Dim mm As String
        Dim j As Integer
        Dim temp As String
        Dim temp1 As String
        Dim temp2 As String
        Dim temp3 As String
        Dim temp4 As String
            ll = Len(STRValue)If ll = 0 Then
       
       GetCode = ""
       
    Else    ''''
        '**************************************
        i = 1
        For i = 1 To ll
       
            AscNumber = Asc(Mid(STRValue, i, 1)) '取ASC码
            
            hh = Hex(AscNumber) '换成16进制码
            
            If Len(hh) < 2 Then '不够二位的补0
              hh = "0" & hh
            End If
            
            For j = 1 To Len(hh)
                ss = Mid(hh, j, 1)
                
                Select Case ss
                       Case "0"
                            mm = "0000"
                       Case "1"
                            mm = "0001"
                       Case "2"
                            mm = "0010"
                       Case "3"
                            mm = "0011"
                       Case "4"
                            mm = "0100"
                       Case "5"
                            mm = "0101"
                       Case "6"
                            mm = "0110"
                       Case "7"
                            mm = "0111"
                       Case "8"
                            mm = "1000"
                       Case "9"
                            mm = "1001"
                       Case "A"
                            mm = "1010"
                       Case "B"
                            mm = "1011"
                       Case "C"
                            mm = "1100"
                       Case "D"
                            mm = "1101"
                       Case "E"
                            mm = "1110"
                       Case "F"
                            mm = "1111"
                End Select
                
                temp = temp & mm
            Next j
            
          Next i
          '**************************************
         '  Debug.Print "G", temp
          temp2 = ""
          temp3 = ""
          i = 1
          For i = 1 To Len(temp)
              If i / 2 = Int(i / 2) Then
                    temp2 = temp2 & Mid(temp, i, 1)
              Else
                    temp3 = temp3 & Mid(temp, i, 1)
              End If
          Next
          
          temp = temp2 & temp3
         
          '**************************************
          temp1 = Right(temp, 7)
          temp = temp1 & Left(temp, Len(temp) - 7)      temp1 = Left(temp, Len(temp) / 2)
          temp = Right(temp, Len(temp) / 2) & temp1      temp1 = Mid(temp, Len(temp) / 2, 2)
          
          temp = temp1 & temp & temp1
          '**************************************
          
          
          temp1 = ""
          ss = ""
          mm = ""
          j = 1
          For j = 1 To Len(temp) Step 4
                
                ss = Mid(temp, j, 4)
                
                Select Case ss
                       
                       Case "0000"
                            mm = "F"
                       Case "0001"
                            mm = "b"
                       Case "0010"
                            mm = "2"
                       Case "0011"
                            mm = "P"
                       Case "0100"
                            mm = "V"
                       Case "0101"
                            mm = "j"
                       Case "0110"
                            mm = "W"
                       Case "0111"
                            mm = "N"
                       Case "1000"
                            mm = "q"
                       Case "1001"
                            mm = "m"
                       Case "1010"
                            mm = "7"
                       Case "1011"
                            mm = "i"
                       Case "1100"
                            mm = "d"
                       Case "1101"
                            mm = "c"
                       Case "1110"
                            mm = "L"
                       Case "1111"
                            mm = "g"
                End Select
                
                temp1 = temp1 & mm
            Next j
            
               temp = temp1
          '**************************************
          '     Debug.Print "A", temp
               i = 1
               temp1 = ""
               For i = 1 To Len(temp)               temp1 = temp1 & Chr(Asc(Mid(temp, i, 1)) Xor 17)           Next i           temp = temp1
           '**************************************
         '      Debug.Print "B", temp
               i = 1
               temp1 = ""
               For i = 1 To Len(temp)
    '               temp2 = Chr(Int(Rnd * 25) + 65)
    '
    '               If (Asc(Mid(temp, i, 1)) Xor Asc(temp2)) > 127 Then
    '                    temp3 = Chr(Asc(Mid(temp, i, 1)) Xor Asc(temp2) - 127 + 32)
    '                    temp4 = "a"
    '               ElseIf (Asc(Mid(temp, i, 1)) Xor Asc(temp2)) < 32 Then
    '                    temp3 = Chr(Asc(Mid(temp, i, 1)) Xor Asc(temp2) + 32)
    '                    temp4 = "b"
    '                    Else
    '                    temp3 = Chr(Asc(Mid(temp, i, 1)) Xor Asc(temp2))
    '                    temp4 = "c"
    '               End If
    '               temp1 = temp1 & temp3 & temp2 & temp4
                   temp2 = Chr(Int(Rnd * 25))
                   temp3 = Chr(Asc(Mid(temp, i, 1)) Xor Asc(temp2))
                   temp1 = temp1 & temp3 & Chr(Asc(temp2) + 65)
               Next i
            '**************************************
            temp = temp1    '    Debug.Print "C", temp
               
          GetCode = temp
    End IfEnd Function
      

  2.   

    =========================
    解密函数
    =========================
    Public Function GetPassword(ByVal temp As String) As String
        Dim ll As Integer
        Dim i As Integer
        Dim ss As String
        Dim mm As String
        Dim j As Integer
        Dim hh As String
        Dim DD As Long
        Dim TT As String
        Dim temp1 As String
        Dim temp2 As String
        Dim temp3 As String
        
        '**************************************
    If Len(temp) = 0 Then
       GetPassword = ""
    Else
        
        '********************************
        temp1 = ""
        
        i = 1
        For i = 1 To Len(temp) Step 2
            temp1 = temp1 & Chr(Asc(Mid(temp, i, 1)) Xor Asc(Mid(temp, i + 1, 1)) - 65)
        Next i
        temp = temp1
            
        '********************************
        i = 1
        temp1 = ""
        For i = 1 To Len(temp)
            temp1 = temp1 & Chr(Asc(Mid(temp, i, 1)) Xor 17)
        Next i
        temp = temp1
        
        '********************************
        temp1 = ""
        mm = ""
        ss = ""
        j = 1
          For j = 1 To Len(temp)
                
                ss = Mid(temp, j, 1)
                
                Select Case ss
                       
                       Case "F"
                            mm = "0000"
                       Case "b"
                            mm = "0001"
                       Case "2"
                            mm = "0010"
                       Case "P"
                            mm = "0011"
                       Case "V"
                            mm = "0100"
                       Case "j"
                            mm = "0101"
                       Case "W"
                            mm = "0110"
                       Case "N"
                            mm = "0111"
                       Case "q"
                            mm = "1000"
                       Case "m"
                            mm = "1001"
                       Case "7"
                            mm = "1010"
                       Case "i"
                            mm = "1011"
                       Case "d"
                            mm = "1100"
                       Case "c"
                            mm = "1101"
                       Case "L"
                            mm = "1110"
                       Case "g"
                            mm = "1111"
                       Case Else
                            GetPassword = ""
                            Exit Function
                End Select
                
                temp1 = temp1 & mm
            Next j
        
        temp = temp1
        
        '**************************************
        
        temp = Left(temp, Len(temp) - 2)
        temp = Right(temp, Len(temp) - 2)    temp1 = Left(temp, Len(temp) / 2)
        temp = Right(temp, Len(temp) / 2) & temp1    temp1 = Left(temp, 7)
        temp = Right(temp, Len(temp) - 7) & temp1
        
        '**************************************
        
          temp1 = ""
          temp2 = Left(temp, Len(temp) / 2)
          temp3 = Right(temp, Len(temp) / 2)
          
          i = 1
          For i = 1 To Len(temp2)
              temp1 = temp1 & Mid(temp3, i, 1) & Mid(temp2, i, 1)
          Next
          
          temp = temp1
        
         
        '**************************************
        ll = Len(temp)
        i = 1
        For i = 1 To ll Step 4
            ss = Mid(temp, i, 4)
            
                Select Case ss
                       
                       Case "0000"
                            mm = "0"
                       Case "0001"
                            mm = "1"
                       Case "0010"
                            mm = "2"
                       Case "0011"
                            mm = "3"
                       Case "0100"
                            mm = "4"
                       Case "0101"
                            mm = "5"
                       Case "0110"
                            mm = "6"
                       Case "0111"
                            mm = "7"
                       Case "1000"
                            mm = "8"
                       Case "1001"
                            mm = "9"
                       Case "1010"
                            mm = "A"
                       Case "1011"
                            mm = "B"
                       Case "1100"
                            mm = "C"
                       Case "1101"
                            mm = "D"
                       Case "1110"
                            mm = "E"
                       Case "1111"
                            mm = "F"
                End Select
                
                hh = hh & mm
         
        Next i
        '**************************************
        
        j = 1
        
        While j <= Len(hh)
            
            If Mid(hh, j, 1) < "8" Then
                DD = CDec("&H" & Mid(hh, j, 2))
                TT = TT & Chr(DD)
                j = j + 2
            Else
                DD = CDec("&H" & Mid(hh, j, 4))
                TT = TT & Chr(DD)
                j = j + 4
            End If
            
        Wend
        '**************************************
        
        
        GetPassword = TT
    End IfEnd Function
      

  3.   

    SORRY!没有及时给分,感到抱歉。。