以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于快递API中的MD5加密的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=151711)

--  作者:ap9709130
--  发布时间:2020/7/1 17:38:00
--  关于快递API中的MD5加密的问题
 老师

      在快宝快递API 的开发文档中C#的函数如下:

     public static string GetMd5(string md5str, int type)
    {
        if (type == 16)
        {
            MD5 algorithm = MD5.Create();
            byte[] data = algorithm.ComputeHash(Encoding.UTF8.GetBytes(md5str));
            string sh1 = "";
            for (int i = 0; i < data.Length; i++)
            {
                sh1 += data[i].ToString("x2").ToUpperInvariant();
            }
            return sh1.Substring(8, 16).ToLower();
        }
        else if (type == 32)
        {
            MD5 algorithm = MD5.Create();
            byte[] data = algorithm.ComputeHash(Encoding.UTF8.GetBytes(md5str));
            string sh1 = "";
            for (int i = 0; i < data.Length; i++)
            {
                sh1 += data[i].ToString("x2").ToUpperInvariant();
            }
            return sh1.ToLower();
        }
        return "";
    }

    我按论坛上的代码转换成VB.net 代码如下:
 
    Public Shared Function GetMd5(ByVal md5str As String, ByVal type As Integer) As String
    If type = 16 Then
        Dim algorithm As MD5 = MD5.Create()
        Dim data As Byte() = algorithm.ComputeHash(Encoding.UTF8.GetBytes(md5str))
        Dim sh1 As String = ""

        For i As Integer = 0 To data.Length - 1
            sh1 += data(i).ToString("x2").ToUpperInvariant()
        Next

        Return sh1.Substring(8, 16).ToLower()
    ElseIf type = 32 Then
        Dim algorithm As MD5 = MD5.Create()
        Dim data As Byte() = algorithm.ComputeHash(Encoding.UTF8.GetBytes(md5str))
        Dim sh1 As String = ""

        For i As Integer = 0 To data.Length - 1
            sh1 += data(i).ToString("x2").ToUpperInvariant()
        Next

        Return sh1.ToLower()
    End If

    Return ""
End Function

但是    Dim algorithm As MD5 = MD5.Create() 这句会报错,说不存在 MD5 ,请问老师要怎么改 ?

   

--  作者:有点蓝
--  发布时间:2020/7/2 8:33:00
--  
写全命名空间

Public Function GetMd5(ByVal md5str As String, ByVal Type As Integer) As String
    If Type = 16 Then
        Dim algorithm As System.Security.Cryptography.MD5 = System.Security.Cryptography.MD5.Create()
        Dim data As Byte() = algorithm.ComputeHash(Encoding.UTF8.GetBytes(md5str))
        Dim sh1 As String = ""

        For i As Integer = 0 To data.Length - 1
            sh1 += data(i).ToString("x2").ToUpperInvariant()
        Next
        Return sh1.Substring(8, 16).ToLower()
    ElseIf Type = 32 Then
        Dim algorithm As System.Security.Cryptography.MD5 = System.Security.Cryptography.MD5.Create()
        Dim data As Byte() = algorithm.ComputeHash(Encoding.UTF8.GetBytes(md5str))
        Dim sh1 As String = ""

        For i As Integer = 0 To data.Length - 1
            sh1 += data(i).ToString("x2").ToUpperInvariant()
        Next

        Return sh1.ToLower()
    End If

    Return ""
End Function