首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

asp VB SCRIPT的MD5算法,哪位高手能帮小弟我转成VB代码啊

2012-03-14 
asp VB SCRIPT的MD5算法,谁能帮我转成VB代码啊??由于是新手,没分给,对不起了..代码如下:

asp VB SCRIPT的MD5算法,谁能帮我转成VB代码啊??
由于是新手,没分给,对不起了..代码如下:

'========================================

Public   Const   BITS_TO_A_BYTE   =   8
Public   Const   BYTES_TO_A_WORD   =   4
Public   Const   BITS_TO_A_WORD   =   32

Public   m_lOnBits(30)
Public   m_l2Power(30)
 
Public   Function   LShift(lValue,   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

Public   Function   RShift(lValue,   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

Public   Function   RotateLeft(lValue,   iShiftBits)
        RotateLeft   =   LShift(lValue,   iShiftBits)   Or   RShift(lValue,   (32   -   iShiftBits))
End   Function

Public   Function   AddUnsigned(lX,   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

Public   Function   md5_F(x,   y,   z)
        md5_F   =   (x   And   y)   Or   ((Not   x)   And   z)
End   Function

Public   Function   md5_G(x,   y,   z)
        md5_G   =   (x   And   z)   Or   (y   And   (Not   z))
End   Function

Public   Function   md5_H(x,   y,   z)
        md5_H   =   (x   Xor   y   Xor   z)
End   Function

Public   Function   md5_I(x,   y,   z)
        md5_I   =   (y   Xor   (x   Or   (Not   z)))
End   Function

Public   Sub   md5_FF(a,   b,   c,   d,   x,   s,   ac)
        a   =   AddUnsigned(a,   AddUnsigned(AddUnsigned(md5_F(b,   c,   d),   x),   ac))


        a   =   RotateLeft(a,   s)
        a   =   AddUnsigned(a,   b)
End   Sub

Public   Sub   md5_GG(a,   b,   c,   d,   x,   s,   ac)
        a   =   AddUnsigned(a,   AddUnsigned(AddUnsigned(md5_G(b,   c,   d),   x),   ac))
        a   =   RotateLeft(a,   s)
        a   =   AddUnsigned(a,   b)
End   Sub

Public   Sub   md5_HH(a,   b,   c,   d,   x,   s,   ac)
        a   =   AddUnsigned(a,   AddUnsigned(AddUnsigned(md5_H(b,   c,   d),   x),   ac))
        a   =   RotateLeft(a,   s)
        a   =   AddUnsigned(a,   b)
End   Sub

Public   Sub   md5_II(a,   b,   c,   d,   x,   s,   ac)
        a   =   AddUnsigned(a,   AddUnsigned(AddUnsigned(md5_I(b,   c,   d),   x),   ac))
        a   =   RotateLeft(a,   s)
        a   =   AddUnsigned(a,   b)
End   Sub

Public   Function   ConvertToWordArray(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

Public   Function   WordToHex(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

Public   Function   MD5(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)
'(未完)

[解决办法]
你把你发的代码全部放入模块中,然后在程序中:
text2.text=MD5(text1.text)

热点排行