• 终于实现VB.NET MD5加密


    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

  • 相关阅读:
    宠物店4.0的安装
    《professional asp.net 2.0》读书笔记连载2
    《xhtml 入门系列》之一
    ALinq 让Mysql变得如此简单
    ALinq 入门学习(八)ALinq 对Vs2010 的支持
    教你一款极为简单实用的图表插件
    虚拟机下无法启动 Linux 系统
    怎样去突破文件依赖缓存
    jQuery 表单验证扩展(五)
    Log4Net 全方位跟踪程序运行
  • 原文地址:https://www.cnblogs.com/xing979020/p/5111506.html
Copyright © 2020-2023  润新知