vb.net教程
https://www.xin3721.com/eschool/vbnetxin3721/
VB.NET MD5加密想着这个功能很普遍,就在网上找了一个代码

'对strSource进行转码,然后再变成大写,再进行加密
Function MD51(ByVal strSource As String, ByVal Code As Int16) As String
Dim dataToHash As Byte()
dataToHash = (New System.Text.UTF8Encoding).GetBytes(UCase(URLEncode(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
''把带来中文的URL编码,都转换成GBK的编码方式
Public Function URLEncode(ByRef strEnc As String) As String
Dim strTmp2, strChar, strTmp, strRet As String
strRet = ""
Dim lngLoop As Integer
For lngLoop = 0 To strEnc.Length - 1
strChar = strEnc.Substring(lngLoop, 1)
Select Case Asc(strChar)
Case 48 To 57, 65 To 90, 97 To 122
strRet &= strChar
Case 32
strRet &= "+"
Case Else
strTmp = Hex(Asc(strChar))
If strTmp.Length > 4 Then
strTmp = strTmp.Substring(4)
strRet &= "%" & strTmp.Substring(0, 2)
If strTmp.Length > 2 Then
strTmp2 = strTmp.Substring(2)
strRet &= IIf(IsNumeric(strTmp.Substring(2, 1)), Chr(Val("&H" & strTmp2)), "%" & strTmp2)
End If
End If
End Select
Next
URLEncode = strRet
End Function
''把带来中文的URL编码,都转换成GBK的编码方式
Public Function URLenc(ByVal strEnc As String) As String
Dim lngLoop, lngAsc As Long
URLenc = ""
Dim strChr As String
For lngLoop = 0 To strEnc.Length - 1
strChr = strEnc.Substring(lngLoop, 1)
If Math.Abs(Asc(strChr)) < 255 Then
URLenc &= strChr
Else
lngAsc = Asc(strChr)
If lngAsc < 0 Then lngAsc = lngAsc + 65536
URLenc &= "%" & Hex((lngAsc And -256) \ 255) & "%" & Hex(lngAsc And 255)
End If
Next
End Function

使用这个MD5加密后,有时对,有时不对,特别跟ASP的MD5有时都对不上。如果有小数点的数字,加密还无法对点加密。
今天完善一个支付宝批量转账的程序时也需要使用到MD5就再百度了一下。运气好看到了微软的VB.NET MD5的帮助。终于实现的简单的MD5加密。结果初步对比是正确的。

Public Function funcMD5(ByVal str As String) As String
Using md5Hash As MD5 = MD5.Create()
Dim hash As String = GetMd5Hash(md5Hash, str)
Return hash
End Using
End Function
Function GetMd5Hash(ByVal md5Hash As MD5, ByVal input As String) As String
' Convert the input string to a byte array and compute the hash.
Dim data As Byte() = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input))
' Create a new Stringbuilder to collect the bytes
' and create a string.
Dim sBuilder As New StringBuilder()
' Loop through each byte of the hashed data
' and format each one as a hexadecimal string.
Dim i As Integer
For i = 0 To data.Length - 1
sBuilder.Append(data(i).ToString("x2"))
Next i
' Return the hexadecimal string.
Return sBuilder.ToString()
End Function 'GetMd5Hash

文章在:https://msdn.microsoft.com/zh-cn/library/system.security.cryptography.md5.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1




















