哪位老兄能不能发一个加密和解密的函数给我呀,先谢了

解决方案 »

  1.   

    http://www.yesky.com/SoftChannel/72342371928637440/20010116/154958.shtml
      

  2.   

    Option Explicit
    Const MIN_ASC = 32  ' Space.
    Const MAX_ASC = 126 ' ~.
    Const NUM_ASC = MAX_ASC - MIN_ASC + 1'***************************************************
    '   Encipher the text using the pasword.
    '   此函数的作用为加密字符串
    '   from_text:欲加密的字符串
    '   PassWord:密匙
    '***************************************************
    Public Function strEncrypt(ByVal from_text As String, ByVal password As String) As String
    Dim offset As Long
    Dim str_len As Integer
    Dim i As Integer
    Dim ch As Integer    ' Initialize the random number generator.
        offset = NumericPassword(password)
        Rnd -1
        Randomize offset    ' Encipher the string.
        str_len = Len(from_text)
        For i = 1 To str_len
            ch = Asc(Mid$(from_text, i, 1))
            If ch >= MIN_ASC And ch <= MAX_ASC Then
                ch = ch - MIN_ASC
                offset = Int((NUM_ASC + 1) * Rnd)
                ch = ((ch + offset) Mod NUM_ASC)
                ch = ch + MIN_ASC
                strEncrypt = strEncrypt & Chr$(ch)
            End If
        Next i
    End Function' Encipher the text using the pasword.
    Public Function DeStrEncrypt(ByVal from_text As String, ByVal password As String) As StringDim offset As Long
    Dim str_len As Integer
    Dim i As Integer
    Dim ch As Integer    ' Initialize the random number generator.
        offset = NumericPassword(password)
        Rnd -1
        Randomize offset    ' Encipher the string.
        str_len = Len(from_text)
        For i = 1 To str_len
            ch = Asc(Mid$(from_text, i, 1))
            If ch >= MIN_ASC And ch <= MAX_ASC Then
                ch = ch - MIN_ASC
                offset = Int((NUM_ASC + 1) * Rnd)
                ch = ((ch - offset) Mod NUM_ASC)
                If ch < 0 Then ch = ch + NUM_ASC
                ch = ch + MIN_ASC
                DeStrEncrypt = DeStrEncrypt & Chr$(ch)
            End If
        Next i
    End Function
    ' Translate a password into an offset value.
    Private Function NumericPassword(ByVal password As String) As Long
    Dim value As Long
    Dim ch As Long
    Dim shift1 As Long
    Dim shift2 As Long
    Dim i As Integer
    Dim str_len As Integer    str_len = Len(password)
        For i = 1 To str_len
            ' Add the next letter.
            ch = Asc(Mid$(password, i, 1))
            value = value Xor (ch * 2 ^ shift1)
            value = value Xor (ch * 2 ^ shift2)        ' Change the shift offsets.
            shift1 = (shift1 + 7) Mod 19
            shift2 = (shift2 + 13) Mod 23
        Next i
        NumericPassword = value
    End Function