以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请问MD5 32位加密算法  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=43529)

--  作者:iliksou
--  发布时间:2013/12/9 16:28:00
--  请问MD5 32位加密算法
请问MD5 32位加密算法?
--  作者:iliksou
--  发布时间:2013/12/9 16:49:00
--  
顶一下
--  作者:有点甜
--  发布时间:2013/12/9 19:53:00
--  
 把下面的代码写到全局代码,然后调用 msgbox(MD5("12345678", 32))

Public Function MD5(ByVal strSource As String, ByVal Code As Int16) As String
Dim dataToHash As Byte() = (New System.Text.ASCIIEncoding).GetBytes(strSource)
Dim hashvalue As Byte() = CType(System.Security.Cryptography.CryptoConfig.CreateFromName("MD5"), System.Security.Cryptography.HashAlgorithm).ComputeHash(dataToHash)
Dim ATR As String = ""
Dim i As Integer
Select Case Code
    Case 16      \'选择16位字符的加密结果
        For i = 4 To 11
            ATR &= Hex(hashvalue(i)).PadLeft(2, "0").ToLower
            
        Next
    Case 32      \'选择32位字符的加密结果
        For i = 0 To 15
            ATR &= Hex(hashvalue(i)).PadLeft(2, "0").ToLower
        Next
    Case Else       \'Code错误时,返回全部字符串,即32位字符
        For i = 0 To 15
            ATR &= Hex(hashvalue(i)).PadLeft(2, "0").ToLower
        Next
End Select
Return ATR
End Function

--  作者:iliksou
--  发布时间:2013/12/10 19:37:00
--  
谢谢!
--  作者:iliksou
--  发布时间:2013/12/10 19:59:00
--  
经测试,完全正确。
--  作者:Hopenight
--  发布时间:2017/5/6 18:01:00
--  
以下是引用有点甜在2013/12/9 19:53:00的发言:
 把下面的代码写到全局代码,然后调用 msgbox(MD5("12345678", 32))

Public Function MD5(ByVal strSource As String, ByVal Code As Int16) As String
Dim dataToHash As Byte() = (New System.Text.ASCIIEncoding).GetBytes(strSource)
Dim hashvalue As Byte() = CType(System.Security.Cryptography.CryptoConfig.CreateFromName("MD5"), System.Security.Cryptography.HashAlgorithm).ComputeHash(dataToHash)
Dim ATR As String = ""
Dim i As Integer
Select Case Code
    Case 16      \'选择16位字符的加密结果
        For i = 4 To 11
            ATR &= Hex(hashvalue(i)).PadLeft(2, "0").ToLower
            
        Next
    Case 32      \'选择32位字符的加密结果
        For i = 0 To 15
            ATR &= Hex(hashvalue(i)).PadLeft(2, "0").ToLower
        Next
    Case Else       \'Code错误时,返回全部字符串,即32位字符
        For i = 0 To 15
            ATR &= Hex(hashvalue(i)).PadLeft(2, "0").ToLower
        Next
End Select
Return ATR
End Function

学习了,谢谢!

[此贴子已经被作者于2017/5/6 18:04:00编辑过]