電腦技巧.圖片新聞 | 用戶注冊 | 用戶中心 | 發表文章 | 留言簿 | 掃一掃手機閱讀
          |繁體中文|  RSS訂閱 |極速版  |手機訪問  
        電腦常用技巧,PC Skill,電腦知識,組裝維修,經驗,資料精華寶庫,HUGESKY CMS官網,鴻天全站,HUGESKY-MD5 加密算法 VB 實現代碼
        本站申明:
        本站盡量純凈無廣告,提供交流學習類共享資料。[廣告投放說明] [聯系]
        • 首 頁
        • 電腦知識
        • 應用技巧
        • 組裝技巧
        • 維修技巧
        • 網絡技巧
        • 組網通信
        • 辦公技巧
        • 技巧視頻
        • 編程技巧
        • 防毒技巧
        • 博客圈
        會員注冊關閉
        帳號: 密碼: 驗證碼: 點擊顯示驗證碼 記住
        電腦技巧 -> 編程技巧 -> NET編程技巧

        MD5 加密算法 VB 實現代碼

        作者:來源:網絡收集 整理日期:2012-11-07
        推薦指數: 點擊:3245   文字大小: 加入收藏夾


        雖然現在MD5 加密算法嚴格來講已經不算安全,但一般小功能或公司內部使用應該足夠了 。
         
        直接調用就可以了 

        '使用例子msgbox md5("加密的字符串")


        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(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
        Private 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
        Private Function RotateLeft(lValue, iShiftBits)
        RotateLeft = LShift(lValue, iShiftBits) or RShift(lValue, (32 - iShiftBits))
        End Function
        Private 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
        Private Function md5_F(x, y, z)
        md5_F = (x And y) or ((Not x) And z)
        End Function
        Private Function md5_G(x, y, z)
        md5_G = (x And z) or (y And (Not z))
        End Function
        Private Function md5_H(x, y, z)
        md5_H = (x Xor y Xor z)
        End Function
        Private Function md5_I(x, y, z)
        md5_I = (y Xor (x or (Not z)))
        End Function
        Private 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
        Private 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
        Private 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
        Private 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
        Private 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
        Private 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)
        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 
        End Function
        Attribute VB_Name = "modMd5"
        ' MODULE:       CMD5
        '*******************************************************************************
        Option Explicit
        Public Const BITS_TO_A_BYTE  As Long = 8
        Public Const BYTES_TO_A_WORD As Long = 4
        Public Const BITS_TO_A_WORD  As Long = BYTES_TO_A_WORD * BITS_TO_A_BYTE
        Public m_lOnBits(0 To 30) As Long
        Public m_l2Power(0 To 30) As Long
        Public Function MD5_Encrypt(ByVal sText As String) As String
        MD5_Init
        MD5_Encrypt = MD5(sText)
        End Function

        獲得更多 -> 編程技巧 -> NET編程技巧
        技術支持

        責任編輯: webmaster >>> 百度上搜索  谷歌上搜索

        hugesky
        點擊復制本連接 (http://www.walela49.com/showarticle.php?id=4967)

        發送到郵件  轉換為打印版本  投 發表文章  報 侵權報告  關 關閉窗口
         Windows 7安全模式下修復系統故障方法說明
         [圖文]WiFi Protector輕松隱藏筆記本網卡IP地址

        >>> 相關資訊:

        • . 輕松實現SQLServer與Access、Excel數
        • . [圖文]SQLserver2000數據導入導出詳解
        • . 利用SQLServer的DTS操作EXCEL、Acces
        • . 一些很酷的.Net技巧
        • . IT行業薪水情況
        • . 實現VB與EXCEL的無縫連接
        • . sqlserver數據庫導出到xls
        • . ASP.NETMVC入門介紹(上)
        • . jquery.min.js與其他js腳本的沖突解決
        • . 30秒打造強類型ASP.NET數據綁定
        【聲明】:
        以上文章或資料除注明為電腦技巧原創或編輯整理外,均為網絡收集整理或網友推薦。以上內容以共享、參考、研究為目的,不存在任何商業目的。
        未注明作者或出處的文章,可能資料來源不規范。如有涉及版權請給予及時聯系更正或予以刪除。
        評論:(開放)

          網友評論: 評  
        以下網友評論只代表網友個人觀點,不代表本站觀點
          發表評論:(匿名用戶不能發表評論! 注冊 登陸)
        昵稱: 驗證碼:
        評分:
        5 4 3 2 1
        內容:
          請文明參與討論,禁止漫罵攻擊。
         
        ·用戶發表意見僅代表其個人意見,并且承擔一切因發表內容引起的糾紛和責任.
        ·本站管理人員有權在不通知用戶的情況下刪除不符合規定的評論信息或留做證據.
        ·請客觀的評價您所看到的資訊,提倡就事論事,杜絕漫罵和人身攻擊等不文明行為.
        內容搜索
          • 站內搜索
        熱門資訊
        • 電腦快捷鍵全都在這了!電腦技巧...
        • 圖說最常用的10個電腦技巧
        • 別說你不會?這9個電腦技巧你必須...
        • Win7解決C盤占用空間大的方法
        • 網銀密碼設置小技巧
        • win7安裝AHCI驅動
        • 平板電腦選購六大要點
        • [推薦]五步搞定電腦網絡安全 五步...
        • 系統自帶的最不起眼但又是最強的...
        • 上班族必懂的電腦技能技巧
        推薦信息
        開啟模板:NEWSKY -關于版權 - 隱私保護 - 聯系我們 - 網站地圖 - 會員列表 - 加入收藏 - 返回頂部

        我問佛:如何才能如你般睿智? 佛曰:佛是過來人,人是未來佛。
        部分資源收集于互聯網并遵循 署名-非商業性使用-相同方式共享3.0共享,盡量署名原創。
        據《信息網絡傳播權保護條例》 如侵犯您的權利,請聯系webmaster(at)hugesky.com刪除。
        Power By HugeSky.Com

        Copyright© www.walela49.com
        Powered by HUGESKY CMS 7.1.1.1080918 professional licensed

        多乐彩