Public Class Class2
    Private Const BITS_TO_A_BYTE = 8
    Private Const BYTES_TO_A_WORD = 4
    Private Const BITS_TO_A_WORD = 32    Private m_lOnBits(30)
    Private m_l2Power(30)    Private Function LShift(ByVal lValue, ByVal iShiftBits)
        If iShiftBits = 0 Then
            LShift = lValue
            Exit Function
        ElseIf iShiftBits = 31 Then
            If lValue And 1 Then
                LShift = &H80000000
            Else
                LShift = 0
            End If
            Exit Function
        ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
            Err.Raise(6)
        End If        If (lValue And m_l2Power(31 - iShiftBits)) Then
            LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) Or &H80000000
        Else
            LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
        End If
    End Function    Private Function RShift(ByVal lValue, ByVal iShiftBits)
        If iShiftBits = 0 Then
            RShift = lValue
            Exit Function
        ElseIf iShiftBits = 31 Then
            If lValue And &H80000000 Then
                RShift = 1
            Else
                RShift = 0
            End If
            Exit Function
        ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
            Err.Raise(6)
        End If        RShift = (lValue And &H7FFFFFFE) \ m_l2Power(iShiftBits)        If (lValue And &H80000000) Then
            RShift = (RShift Or (&H40000000 \ m_l2Power(iShiftBits - 1)))
        End If
    End Function    Private Function RotateLeft(ByVal lValue, ByVal iShiftBits)
        RotateLeft = LShift(lValue, iShiftBits) Or RShift(lValue, (32 - iShiftBits))
    End Function    Private Function AddUnsigned(ByVal lX, ByVal lY)
        Dim lX4
        Dim lY4
        Dim lX8
        Dim lY8
        Dim lResult        lX8 = lX And &H80000000
        lY8 = lY And &H80000000
        lX4 = lX And &H40000000
        lY4 = lY And &H40000000        lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF)        If lX4 And lY4 Then
            lResult = lResult Xor &H80000000 Xor lX8 Xor lY8
        ElseIf lX4 Or lY4 Then
            If lResult And &H40000000 Then
                lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8
            Else
                lResult = lResult Xor &H40000000 Xor lX8 Xor lY8
            End If
        Else
            lResult = lResult Xor lX8 Xor lY8
        End If        AddUnsigned = lResult
    End Function    Private Function md5_F(ByVal x, ByVal y, ByVal z)
        md5_F = (x And y) Or ((Not x) And z)
    End Function    Private Function md5_G(ByVal x, ByVal y, ByVal z)
        md5_G = (x And z) Or (y And (Not z))
    End Function    Private Function md5_H(ByVal x, ByVal y, ByVal z)
        md5_H = (x Xor y Xor z)
    End Function    Private Function md5_I(ByVal x, ByVal y, ByVal z)
        md5_I = (y Xor (x Or (Not z)))
    End Function    Private Sub md5_FF(ByVal a, ByVal b, ByVal c, ByVal d, ByVal x, ByVal s, ByVal ac)
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_F(b, c, d), x), ac))
        a = RotateLeft(a, s)
        a = AddUnsigned(a, b)
    End Sub    Private Sub md5_GG(ByVal a, ByVal b, ByVal c, ByVal d, ByVal x, ByVal s, ByVal ac)
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_G(b, c, d), x), ac))
        a = RotateLeft(a, s)
        a = AddUnsigned(a, b)
    End Sub    Private Sub md5_HH(ByVal a, ByVal b, ByVal c, ByVal d, ByVal x, ByVal s, ByVal ac)
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_H(b, c, d), x), ac))
        a = RotateLeft(a, s)
        a = AddUnsigned(a, b)
    End Sub    Private Sub md5_II(ByVal a, ByVal b, ByVal c, ByVal d, ByVal x, ByVal s, ByVal ac)
        a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_I(b, c, d), x), ac))
        a = RotateLeft(a, s)
        a = AddUnsigned(a, b)
    End Sub    Private Function ConvertToWordArray(ByVal sMessage)
        Dim lMessageLength
        Dim lNumberOfWords
        Dim lWordArray()
        Dim lBytePosition
        Dim lByteCount
        Dim lWordCount        Const MODULUS_BITS = 512
        Const CONGRUENT_BITS = 448        lMessageLength = Len(sMessage)        lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) \ BITS_TO_A_BYTE)) \ (MODULUS_BITS \ BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS \ BITS_TO_A_WORD)
        ReDim lWordArray(lNumberOfWords - 1)        lBytePosition = 0
        lByteCount = 0
        Do Until lByteCount >= lMessageLength
            lWordCount = lByteCount \ BYTES_TO_A_WORD
            lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
            lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage, lByteCount + 1, 1)), lBytePosition)
            lByteCount = lByteCount + 1
        Loop        lWordCount = lByteCount \ BYTES_TO_A_WORD
        lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE        lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(&H80, lBytePosition)        lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3)
        lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29)        ConvertToWordArray = lWordArray
    End Function    Private Function WordToHex(ByVal lValue)
        Dim lByte
        Dim lCount        For lCount = 0 To 3
            lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE - 1)
            WordToHex = WordToHex & Right("0" & Hex(lByte), 2)
        Next
    End Function

解决方案 »

  1.   

    Public Function MD5(ByVal sMessage)
            m_lOnBits(0) = CLng(1)
            m_lOnBits(1) = CLng(3)
            m_lOnBits(2) = CLng(7)
            m_lOnBits(3) = CLng(15)
            m_lOnBits(4) = CLng(31)
            m_lOnBits(5) = CLng(63)
            m_lOnBits(6) = CLng(127)
            m_lOnBits(7) = CLng(255)
            m_lOnBits(8) = CLng(511)
            m_lOnBits(9) = CLng(1023)
            m_lOnBits(10) = CLng(2047)
            m_lOnBits(11) = CLng(4095)
            m_lOnBits(12) = CLng(8191)
            m_lOnBits(13) = CLng(16383)
            m_lOnBits(14) = CLng(32767)
            m_lOnBits(15) = CLng(65535)
            m_lOnBits(16) = CLng(131071)
            m_lOnBits(17) = CLng(262143)
            m_lOnBits(18) = CLng(524287)
            m_lOnBits(19) = CLng(1048575)
            m_lOnBits(20) = CLng(2097151)
            m_lOnBits(21) = CLng(4194303)
            m_lOnBits(22) = CLng(8388607)
            m_lOnBits(23) = CLng(16777215)
            m_lOnBits(24) = CLng(33554431)
            m_lOnBits(25) = CLng(67108863)
            m_lOnBits(26) = CLng(134217727)
            m_lOnBits(27) = CLng(268435455)
            m_lOnBits(28) = CLng(536870911)
            m_lOnBits(29) = CLng(1073741823)
            m_lOnBits(30) = CLng(2147483647)        m_l2Power(0) = CLng(1)
            m_l2Power(1) = CLng(2)
            m_l2Power(2) = CLng(4)
            m_l2Power(3) = CLng(8)
            m_l2Power(4) = CLng(16)
            m_l2Power(5) = CLng(32)
            m_l2Power(6) = CLng(64)
            m_l2Power(7) = CLng(128)
            m_l2Power(8) = CLng(256)
            m_l2Power(9) = CLng(512)
            m_l2Power(10) = CLng(1024)
            m_l2Power(11) = CLng(2048)
            m_l2Power(12) = CLng(4096)
            m_l2Power(13) = CLng(8192)
            m_l2Power(14) = CLng(16384)
            m_l2Power(15) = CLng(32768)
            m_l2Power(16) = CLng(65536)
            m_l2Power(17) = CLng(131072)
            m_l2Power(18) = CLng(262144)
            m_l2Power(19) = CLng(524288)
            m_l2Power(20) = CLng(1048576)
            m_l2Power(21) = CLng(2097152)
            m_l2Power(22) = CLng(4194304)
            m_l2Power(23) = CLng(8388608)
            m_l2Power(24) = CLng(16777216)
            m_l2Power(25) = CLng(33554432)
            m_l2Power(26) = CLng(67108864)
            m_l2Power(27) = CLng(134217728)
            m_l2Power(28) = CLng(268435456)
            m_l2Power(29) = CLng(536870912)
            m_l2Power(30) = CLng(1073741824)
            Dim x
            Dim k
            Dim AA
            Dim BB
            Dim CC
            Dim DD
            Dim a
            Dim b
            Dim c
            Dim d        Const S11 = 7
            Const S12 = 12
            Const S13 = 17
            Const S14 = 22
            Const S21 = 5
            Const S22 = 9
            Const S23 = 14
            Const S24 = 20
            Const S31 = 4
            Const S32 = 11
            Const S33 = 16
            Const S34 = 23
            Const S41 = 6
            Const S42 = 10
            Const S43 = 15
            Const S44 = 21        x = ConvertToWordArray(sMessage)        a = &H67452301
            b = &HEFCDAB89
            c = &H98BADCFE
            d = &H10325476        For k = 0 To UBound(x) Step 16
                AA = a
                BB = b
                CC = c
                DD = d            md5_FF(a, b, c, d, x(k + 0), S11, &HD76AA478)
                md5_FF(d, a, b, c, x(k + 1), S12, &HE8C7B756)
                md5_FF(c, d, a, b, x(k + 2), S13, &H242070DB)
                md5_FF(b, c, d, a, x(k + 3), S14, &HC1BDCEEE)
                md5_FF(a, b, c, d, x(k + 4), S11, &HF57C0FAF)
                md5_FF(d, a, b, c, x(k + 5), S12, &H4787C62A)
                md5_FF(c, d, a, b, x(k + 6), S13, &HA8304613)
                md5_FF(b, c, d, a, x(k + 7), S14, &HFD469501)
                md5_FF(a, b, c, d, x(k + 8), S11, &H698098D8)
                md5_FF(d, a, b, c, x(k + 9), S12, &H8B44F7AF)
                md5_FF(c, d, a, b, x(k + 10), S13, &HFFFF5BB1)
                md5_FF(b, c, d, a, x(k + 11), S14, &H895CD7BE)
                md5_FF(a, b, c, d, x(k + 12), S11, &H6B901122)
                md5_FF(d, a, b, c, x(k + 13), S12, &HFD987193)
                md5_FF(c, d, a, b, x(k + 14), S13, &HA679438E)
                md5_FF(b, c, d, a, x(k + 15), S14, &H49B40821)            md5_GG(a, b, c, d, x(k + 1), S21, &HF61E2562)
                md5_GG(d, a, b, c, x(k + 6), S22, &HC040B340)
                md5_GG(c, d, a, b, x(k + 11), S23, &H265E5A51)
                md5_GG(b, c, d, a, x(k + 0), S24, &HE9B6C7AA)
                md5_GG(a, b, c, d, x(k + 5), S21, &HD62F105D)
                md5_GG(d, a, b, c, x(k + 10), S22, &H2441453)
                md5_GG(c, d, a, b, x(k + 15), S23, &HD8A1E681)
                md5_GG(b, c, d, a, x(k + 4), S24, &HE7D3FBC8)
                md5_GG(a, b, c, d, x(k + 9), S21, &H21E1CDE6)
                md5_GG(d, a, b, c, x(k + 14), S22, &HC33707D6)
                md5_GG(c, d, a, b, x(k + 3), S23, &HF4D50D87)
                md5_GG(b, c, d, a, x(k + 8), S24, &H455A14ED)
                md5_GG(a, b, c, d, x(k + 13), S21, &HA9E3E905)
                md5_GG(d, a, b, c, x(k + 2), S22, &HFCEFA3F8)
                md5_GG(c, d, a, b, x(k + 7), S23, &H676F02D9)
                md5_GG(b, c, d, a, x(k + 12), S24, &H8D2A4C8A)            md5_HH(a, b, c, d, x(k + 5), S31, &HFFFA3942)
                md5_HH(d, a, b, c, x(k + 8), S32, &H8771F681)
                md5_HH(c, d, a, b, x(k + 11), S33, &H6D9D6122)
                md5_HH(b, c, d, a, x(k + 14), S34, &HFDE5380C)
                md5_HH(a, b, c, d, x(k + 1), S31, &HA4BEEA44)
                md5_HH(d, a, b, c, x(k + 4), S32, &H4BDECFA9)
                md5_HH(c, d, a, b, x(k + 7), S33, &HF6BB4B60)
                md5_HH(b, c, d, a, x(k + 10), S34, &HBEBFBC70)
                md5_HH(a, b, c, d, x(k + 13), S31, &H289B7EC6)
                md5_HH(d, a, b, c, x(k + 0), S32, &HEAA127FA)
                md5_HH(c, d, a, b, x(k + 3), S33, &HD4EF3085)
                md5_HH(b, c, d, a, x(k + 6), S34, &H4881D05)
                md5_HH(a, b, c, d, x(k + 9), S31, &HD9D4D039)
                md5_HH(d, a, b, c, x(k + 12), S32, &HE6DB99E5)
                md5_HH(c, d, a, b, x(k + 15), S33, &H1FA27CF8)
                md5_HH(b, c, d, a, x(k + 2), S34, &HC4AC5665)            md5_II(a, b, c, d, x(k + 0), S41, &HF4292244)
                md5_II(d, a, b, c, x(k + 7), S42, &H432AFF97)
                md5_II(c, d, a, b, x(k + 14), S43, &HAB9423A7)
                md5_II(b, c, d, a, x(k + 5), S44, &HFC93A039)
                md5_II(a, b, c, d, x(k + 12), S41, &H655B59C3)
                md5_II(d, a, b, c, x(k + 3), S42, &H8F0CCC92)
                md5_II(c, d, a, b, x(k + 10), S43, &HFFEFF47D)
                md5_II(b, c, d, a, x(k + 1), S44, &H85845DD1)
                md5_II(a, b, c, d, x(k + 8), S41, &H6FA87E4F)
                md5_II(d, a, b, c, x(k + 15), S42, &HFE2CE6E0)
                md5_II(c, d, a, b, x(k + 6), S43, &HA3014314)
                md5_II(b, c, d, a, x(k + 13), S44, &H4E0811A1)
                md5_II(a, b, c, d, x(k + 4), S41, &HF7537E82)
                md5_II(d, a, b, c, x(k + 11), S42, &HBD3AF235)
                md5_II(c, d, a, b, x(k + 2), S43, &H2AD7D2BB)
                md5_II(b, c, d, a, x(k + 9), S44, &HEB86D391)            a = AddUnsigned(a, AA)
                b = AddUnsigned(b, BB)
                c = AddUnsigned(c, CC)
                d = AddUnsigned(d, DD)
            Next        MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
            ' MD5=LCase(WordToHex(b) & WordToHex(c)) 'I crop this to fit 16byte database password :D
        End FunctionEnd Class
      

  2.   

    还有 如何在VB NET里使用CookieAuthentication.HashPasswordForStoringInConfigFile 对象我找了N久都没找到
      

  3.   

    Option Explicit Dim w1 As String, w2 As String, w3 As String, w4 As String Function MD5F(ByVal tempstr As String, ByVal w As String, ByVal X As String, ByVal y As String, ByVal z As String, ByVal Xin As String, ByVal qdata As String, ByVal rots As Integer) 
    MD5F = BigMod32Add(RotLeft(BigMod32Add(BigMod32Add(w, tempstr), BigMod32Add(Xin, qdata)), rots), X) 
    End Function Sub MD5F1(w As String, ByVal X As String, ByVal y As String, ByVal z As String, ByVal Xin As String, ByVal qdata As String, ByVal rots As Integer) 
    Dim tempstr As String     tempstr = BigXOR(z, BigAND(X, BigXOR(y, z))) 
        w = MD5F(tempstr, w, X, y, z, Xin, qdata, rots) 
    End Sub Sub MD5F2(w As String, ByVal X As String, ByVal y As String, ByVal z As String, ByVal Xin As String, ByVal qdata As String, ByVal rots As Integer) 
    Dim tempstr As String     tempstr = BigXOR(y, BigAND(z, BigXOR(X, y))) 
        w = MD5F(tempstr, w, X, y, z, Xin, qdata, rots) 
    End Sub Sub MD5F3(w As String, ByVal X As String, ByVal y As String, ByVal z As String, ByVal Xin As String, ByVal qdata As String, ByVal rots As Integer) 
    Dim tempstr As String     tempstr = BigXOR(X, BigXOR(y, z)) 
        w = MD5F(tempstr, w, X, y, z, Xin, qdata, rots) 
    End Sub Sub MD5F4(w As String, ByVal X As String, ByVal y As String, ByVal z As String, ByVal Xin As String, ByVal qdata As String, ByVal rots As Integer) 
    Dim tempstr As String     tempstr = BigXOR(y, BigOR(X, BigNOT(z))) 
        w = MD5F(tempstr, w, X, y, z, Xin, qdata, rots) 
    End Sub Function MD5_Calc(ByVal hashthis As String) As String 
    ReDim buf(0 To 3) As String 
    ReDim Xin(0 To 15) As String 
    Dim tempnum As Integer, tempnum2 As Integer, loopit As Integer, loopouter As Integer, loopinner As Integer 
    Dim a As String, b As String, c As String, d As String     tempnum = 8 * Len(hashthis) 
        hashthis = hashthis + Chr$(128) 'Add binary 10000000 
        tempnum2 = 56 - Len(hashthis) Mod 64     If tempnum2 < 0 Then 
            tempnum2 = 64 + tempnum2 
        End If     hashthis = hashthis + String$(tempnum2, Chr$(0))     For loopit = 1 To 8 
            hashthis = hashthis + Chr$(tempnum Mod 256) 
            tempnum = tempnum - tempnum Mod 256 
            tempnum = tempnum / 256 
        Next loopit     
        buf(0) = "67452301" 
        buf(1) = "efcdab89" 
        buf(2) = "98badcfe" 
        buf(3) = "10325476"     
    For loopouter = 0 To Len(hashthis) / 64 - 1 
            a = buf(0) 
            b = buf(1) 
            c = buf(2) 
            d = buf(3)         ' Get the 512 bits 
            For loopit = 0 To 15 
                Xin(loopit) = "" 
                For loopinner = 1 To 4 
                    Xin(loopit) = Hex$(Asc(Mid$(hashthis, 64 * loopouter + 4 * loopit + loopinner, 1))) + Xin(loopit) 
                    If Len(Xin(loopit)) Mod 2 Then Xin(loopit) = "0" + Xin(loopit) 
                Next loopinner 
            Next loopit         
      

  4.   

    ' 第一轮循环 
            MD5F1 a, b, c, d, Xin(0), "d76aa478", 7 
            MD5F1 d, a, b, c, Xin(1), "e8c7b756", 12 
            MD5F1 c, d, a, b, Xin(2), "242070db", 17 
            MD5F1 b, c, d, a, Xin(3), "c1bdceee", 22 
            MD5F1 a, b, c, d, Xin(4), "f57c0faf", 7 
            MD5F1 d, a, b, c, Xin(5), "4787c62a", 12 
            MD5F1 c, d, a, b, Xin(6), "a8304613", 17 
            MD5F1 b, c, d, a, Xin(7), "fd469501", 22 
            MD5F1 a, b, c, d, Xin(8), "698098d8", 7 
            MD5F1 d, a, b, c, Xin(9), "8b44f7af", 12 
            MD5F1 c, d, a, b, Xin(10), "ffff5bb1", 17 
            MD5F1 b, c, d, a, Xin(11), "895cd7be", 22 
            MD5F1 a, b, c, d, Xin(12), "6b901122", 7 
            MD5F1 d, a, b, c, Xin(13), "fd987193", 12 
            MD5F1 c, d, a, b, Xin(14), "a679438e", 17 
            MD5F1 b, c, d, a, Xin(15), "49b40821", 22         ' 第二轮循环 
            MD5F2 a, b, c, d, Xin(1), "f61e2562", 5 
            MD5F2 d, a, b, c, Xin(6), "c040b340", 9 
            MD5F2 c, d, a, b, Xin(11), "265e5a51", 14 
            MD5F2 b, c, d, a, Xin(0), "e9b6c7aa", 20 
            MD5F2 a, b, c, d, Xin(5), "d62f105d", 5 
            MD5F2 d, a, b, c, Xin(10), "02441453", 9 
            MD5F2 c, d, a, b, Xin(15), "d8a1e681", 14 
            MD5F2 b, c, d, a, Xin(4), "e7d3fbc8", 20 
            MD5F2 a, b, c, d, Xin(9), "21e1cde6", 5 
            MD5F2 d, a, b, c, Xin(14), "c33707d6", 9 
            MD5F2 c, d, a, b, Xin(3), "f4d50d87", 14 
            MD5F2 b, c, d, a, Xin(8), "455a14ed", 20 
            MD5F2 a, b, c, d, Xin(13), "a9e3e905", 5 
            MD5F2 d, a, b, c, Xin(2), "fcefa3f8", 9 
            MD5F2 c, d, a, b, Xin(7), "676f02d9", 14 
            MD5F2 b, c, d, a, Xin(12), "8d2a4c8a", 20         ' 第三轮循环 
            MD5F3 a, b, c, d, Xin(5), "fffa3942", 4 
            MD5F3 d, a, b, c, Xin(8), "8771f681", 11 
            MD5F3 c, d, a, b, Xin(11), "6d9d6122", 16 
            MD5F3 b, c, d, a, Xin(14), "fde5380c", 23 
            MD5F3 a, b, c, d, Xin(1), "a4beea44", 4 
            MD5F3 d, a, b, c, Xin(4), "4bdecfa9", 11 
            MD5F3 c, d, a, b, Xin(7), "f6bb4b60", 16 
            MD5F3 b, c, d, a, Xin(10), "bebfbc70", 23 
            MD5F3 a, b, c, d, Xin(13), "289b7ec6", 4 
            MD5F3 d, a, b, c, Xin(0), "e27fa", 11 
            MD5F3 c, d, a, b, Xin(3), "d4ef3085", 16 
            MD5F3 b, c, d, a, Xin(6), "04881d05", 23 
            MD5F3 a, b, c, d, Xin(9), "d9d4d039", 4 
            MD5F3 d, a, b, c, Xin(12), "e6db99e5", 11 
            MD5F3 c, d, a, b, Xin(15), "1fa27cf8", 16 
            MD5F3 b, c, d, a, Xin(2), "c4ac5665", 23         ' 第四轮循环 
            MD5F4 a, b, c, d, Xin(0), "f4292244", 6 
            MD5F4 d, a, b, c, Xin(7), "432aff97", 10 
            MD5F4 c, d, a, b, Xin(14), "ab9423a7", 15 
            MD5F4 b, c, d, a, Xin(5), "fc93a039", 21 
            MD5F4 a, b, c, d, Xin(12), "655b59c3", 6 
            MD5F4 d, a, b, c, Xin(3), "8f0ccc92", 10 
            MD5F4 c, d, a, b, Xin(10), "ffeff47d", 15 
            MD5F4 b, c, d, a, Xin(1), "85845dd1", 21 
            MD5F4 a, b, c, d, Xin(8), "6fa87e4f", 6 
            MD5F4 d, a, b, c, Xin(15), "fe2ce6e0", 10 
            MD5F4 c, d, a, b, Xin(6), "a3014314", 15 
            MD5F4 b, c, d, a, Xin(13), "4e0811a1", 21 
            MD5F4 a, b, c, d, Xin(4), "f7537e82", 6 
            MD5F4 d, a, b, c, Xin(11), "bd3af235", 10 
            MD5F4 c, d, a, b, Xin(2), "2ad7d2bb", 15 
            MD5F4 b, c, d, a, Xin(9), "eb86d391", 21         buf(0) = BigAdd(buf(0), a) 
            buf(1) = BigAdd(buf(1), b) 
            buf(2) = BigAdd(buf(2), c) 
            buf(3) = BigAdd(buf(3), d) 
        Next loopouter     hashthis = "" 
        For loopit = 0 To 3 
            For loopinner = 3 To 0 Step -1 
                hashthis = hashthis + Chr(Val("&H" + Mid$(buf(loopit), 1 + 2 * loopinner, 2))) 
            Next loopinner 
        Next loopit MD5_Calc = hashthis 
    End Function Function BigMod32Add(ByVal value1 As String, ByVal value2 As String) As String 
        BigMod32Add = Right$(BigAdd(value1, value2), 8) 
    End Function Public Function BigAdd(ByVal value1 As String, ByVal value2 As String) As String 
    Dim valueans As String 
    Dim loopit As Integer, tempnum As Integer     tempnum = Len(value1) - Len(value2) 
        If tempnum < 0 Then 
            value1 = Space$(Abs(tempnum)) + value1 
        ElseIf tempnum > 0 Then 
            value2 = Space$(Abs(tempnum)) + value2 
        End If     tempnum = 0 
        For loopit = Len(value1) To 1 Step -1 
            tempnum = tempnum + Val("&H" + Mid$(value1, loopit, 1)) + Val("&H" + Mid$(value2, loopit, 1)) 
            valueans = Hex$(tempnum Mod 16) + valueans 
            tempnum = Int(tempnum / 16) 
        Next loopit     If tempnum <> 0 Then 
            valueans = Hex$(tempnum) + valueans 
        End If     BigAdd = Right(valueans, 8) 
    End Function Public Function RotLeft(ByVal value1 As String, ByVal rots As Integer) As String 
    Dim tempstr As String 
    Dim loopit As Integer, loopinner As Integer 
    Dim tempnum As Integer     rots = rots Mod 32 
        
        If rots = 0 Then 
            RotLeft = value1 
            Exit Function 
        End If     value1 = Right$(value1, 8) 
        tempstr = String$(8 - Len(value1), "0") + value1 
        value1 = ""     ' 转换成二进制形式 
        For loopit = 1 To 8 
            tempnum = Val("&H" + Mid$(tempstr, loopit, 1)) 
            For loopinner = 3 To 0 Step -1 
                If tempnum And 2 ^ loopinner Then 
                    value1 = value1 + "1" 
                Else 
                    value1 = value1 + "0" 
                End If 
            Next loopinner 
        Next loopit 
        tempstr = Mid$(value1, rots + 1) + Left$(value1, rots)     ' 转换为十六进制 
        value1 = "" 
        For loopit = 0 To 7 
            tempnum = 0 
            For loopinner = 0 To 3 
                If Val(Mid$(tempstr, 4 * loopit + loopinner + 1, 1)) Then                 tempnum = tempnum + 2 ^ (3 - loopinner) 
                End If 
            Next loopinner 
            value1 = value1 + Hex$(tempnum) 
        Next loopit     RotLeft = Right(value1, 8) 
    End Function 
      

  5.   

    Function BigAND(ByVal value1 As String, ByVal value2 As String) As String 
    Dim valueans As String 
    Dim loopit As Integer, tempnum As Integer     tempnum = Len(value1) - Len(value2) 
        If tempnum < 0 Then 
            value2 = Mid$(value2, Abs(tempnum) + 1) 
        ElseIf tempnum > 0 Then 
            value1 = Mid$(value1, tempnum + 1) 
        End If 好就这样吧看来没人回答我我就自娱自乐吧    For loopit = 1 To Len(value1) 
            valueans = valueans + Hex$(Val("&H" + Mid$(value1, loopit, 1)) And Val("&H" + Mid$(value2, loopit, 1))) 
        Next loopit     BigAND = valueans 
    End Function Function BigNOT(ByVal value1 As String) As String 
    Dim valueans As String 
    Dim loopit As Integer     value1 = Right$(value1, 8) 
        value1 = String$(8 - Len(value1), "0") + value1 
        For loopit = 1 To 8 
            valueans = valueans + Hex$(15 Xor Val("&H" + Mid$(value1, loopit, 1))) 
        Next loopit     BigNOT = valueans 
    End Function Function BigOR(ByVal value1 As String, ByVal value2 As String) As String 
    Dim valueans As String 
    Dim loopit As Integer, tempnum As Integer     tempnum = Len(value1) - Len(value2) 
        If tempnum < 0 Then 
            valueans = Left$(value2, Abs(tempnum)) 
            value2 = Mid$(value2, Abs(tempnum) + 1) 
        ElseIf tempnum > 0 Then 
            valueans = Left$(value1, Abs(tempnum)) 
            value1 = Mid$(value1, tempnum + 1) 
        End If     For loopit = 1 To Len(value1) 
            valueans = valueans + Hex$(Val("&H" + Mid$(value1, loopit, 1)) Or Val("&H" + Mid$(value2, loopit, 1))) 
        Next loopit     BigOR = valueans 
    End Function Function BigXOR(ByVal value1 As String, ByVal value2 As String) As String 
    Dim valueans As String 
    Dim loopit As Integer, tempnum As Integer     tempnum = Len(value1) - Len(value2) 
        If tempnum < 0 Then 
            valueans = Left$(value2, Abs(tempnum)) 
            value2 = Mid$(value2, Abs(tempnum) + 1) 
        ElseIf tempnum > 0 Then 
            valueans = Left$(value1, Abs(tempnum)) 
            value1 = Mid$(value1, tempnum + 1) 
        End If     For loopit = 1 To Len(value1) 
            valueans = valueans + Hex$(Val("&H" + Mid$(value1, loopit, 1)) Xor Val("&H" + Mid$(value2, loopit, 1))) 
        Next loopit     BigXOR = Right(valueans, 8) 
    End Function 
      

  6.   

    System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile("你的密码","md5");
      

  7.   

    using System.Security.Cryptography;public string MD5Encrypt( string text ) 

    MD5 md5 = new MD5CryptoServiceProvider(); 
    byte[] result = md5.ComputeHash(System.Text.Encoding.Default.GetBytes( Text ) ); 
      return System.Text.Encoding.Default.GetString(result); 

      

  8.   

    gOODiDEA(无语) 的才是正解。
    看看快速入门,我用C#按那的例子写的,从没有出错过
    当我第一眼看到你的代码时我就惊讶了,就我所知的,除了在API调动方面VB会比C#代码明显少之外,还没有哪方面是明显少于C#的,总体来说,C#简洁过VB(VB处理字符和类型时是内置了函数的)