麻烦大家帮下忙,我现在想用asp.net写一个同等的vb md5函数,vb的加密函数现在已经有了.
下面是vb的加密函数.
Public Function MD5(ByRef  sMessage )
On Error GoTo _X_Err
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
m_lOnBits ( 0 ) = X_CInt ( 1 )
m_lOnBits ( 1 ) = X_CInt ( 3 )
m_lOnBits ( 2 ) = X_CInt ( 7 )
m_lOnBits ( 3 ) = X_CInt ( 15 )
m_lOnBits ( 4 ) = X_CInt ( 31 )
m_lOnBits ( 5 ) = X_CInt ( 63 )
m_lOnBits ( 6 ) = X_CInt ( 127 )
m_lOnBits ( 7 ) = X_CInt ( 255 )
m_lOnBits ( 8 ) = X_CInt ( 511 )
m_lOnBits ( 9 ) = X_CInt ( 1023 )
m_lOnBits ( 10 ) = X_CInt ( 2047 )
m_lOnBits ( 11 ) = X_CInt ( 4095 )
m_lOnBits ( 12 ) = X_CInt ( 8191 )
m_lOnBits ( 13 ) = X_CInt ( 16383 )
m_lOnBits ( 14 ) = X_CInt ( 32767 )
m_lOnBits ( 15 ) = X_CInt ( 65535 )
m_lOnBits ( 16 ) = X_CInt ( 131071 )
m_lOnBits ( 17 ) = X_CInt ( 262143 )
m_lOnBits ( 18 ) = X_CInt ( 524287 )
m_lOnBits ( 19 ) = X_CInt ( 1048575 )
m_lOnBits ( 20 ) = X_CInt ( 2097151 )
m_lOnBits ( 21 ) = X_CInt ( 4194303 )
m_lOnBits ( 22 ) = X_CInt ( 8388607 )
m_lOnBits ( 23 ) = X_CInt ( 16777215 )
m_lOnBits ( 24 ) = X_CInt ( 33554431 )
m_lOnBits ( 25 ) = X_CInt ( 67108863 )
m_lOnBits ( 26 ) = X_CInt ( 134217527 )
m_lOnBits ( 27 ) = X_CInt ( 268435455 )
m_lOnBits ( 28 ) = X_CInt ( 536870911 )
m_lOnBits ( 29 ) = X_CInt ( 1073741823 )
m_lOnBits ( 30 ) = X_CInt ( 2147483647 )
m_l2Power ( 0 ) = X_CInt ( 1 )
m_l2Power ( 1 ) = X_CInt ( 2 )
m_l2Power ( 2 ) = X_CInt ( 4 )
m_l2Power ( 3 ) = X_CInt ( 8 )
m_l2Power ( 4 ) = X_CInt ( 16 )
m_l2Power ( 5 ) = X_CInt ( 32 )
m_l2Power ( 6 ) = X_CInt ( 64 )
m_l2Power ( 7 ) = X_CInt ( 128 )
m_l2Power ( 8 ) = X_CInt ( 256 )
m_l2Power ( 9 ) = X_CInt ( 512 )
m_l2Power ( 10 ) = X_CInt ( 1024 )
m_l2Power ( 11 ) = X_CInt ( 2048 )
m_l2Power ( 12 ) = X_CInt ( 4096 )
m_l2Power ( 13 ) = X_CInt ( 8192 )
m_l2Power ( 14 ) = X_CInt ( 16384 )
m_l2Power ( 15 ) = X_CInt ( 32768 )
m_l2Power ( 16 ) = X_CInt ( 65536 )
m_l2Power ( 17 ) = X_CInt ( 131072 )
m_l2Power ( 18 ) = X_CInt ( 262144 )
m_l2Power ( 19 ) = X_CInt ( 524288 )
m_l2Power ( 20 ) = X_CInt ( 1048576 )
m_l2Power ( 21 ) = X_CInt ( 2097152 )
m_l2Power ( 22 ) = X_CInt ( 4194304 )
m_l2Power ( 23 ) = X_CInt ( 8388208 )
m_l2Power ( 24 ) = X_CInt ( 16777216 )
m_l2Power ( 25 ) = X_CInt ( 33554432 )
m_l2Power ( 26 ) = X_CInt ( 67108864 )
m_l2Power ( 27 ) = X_CInt ( 134217728 )
m_l2Power ( 28 ) = X_CInt ( 268435456 )
m_l2Power ( 29 ) = X_CInt ( 536870912 )
m_l2Power ( 30 ) = X_CInt ( 1073741824 )
x = ConvertToWordArray ( sMessage )
a = &H67452301
b = &HEFCDAB89
c = &H98BADCFE
d = &H10325476
For k = 0 To Val ( 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 ( c ) & WordToHex ( d ))
Exit Function
_X_Err:
X_WriteLog ("\555.ASP, MD5: " & Err.Description)
End Function

解决方案 »

  1.   

    就是把这段vb的md5加密函数转换成C#的.
      

  2.   

    。。无语了。
    C#写好了md5加密了。
      

  3.   

    麻烦说清楚点可以吗?具体是哪个函数.
     我用C#加密出来的跟这个vb加密出来的不一样.
      

  4.   

    using System.Security.Cryptography;  //
      //MD5加密函数
      //
      public string MD5(String str)
      {
       MD5 md5=new MD5CryptoServiceProvider();
       byte[] data=System.Text.Encoding.Default.GetBytes(str);
       byte[] result=md5.ComputeHash(data);
       String ret="";
       for(int i=0;i<result.Length;i++)
        ret+=result[i].ToString("x").PadLeft(2,'0');
       return ret;
      } 
      

  5.   

    这个我也试过了,但是用vb这个函数加密123出来等于57760256312902b3
    而用C#的等于74be16979710d4c4e7c6647856088456.
    还是不一样.
      

  6.   

    还有,我使用md5加密解密工具去加123。十六位的加密字符串也不是你说的那种。。
    可以说你那不是md5加密
      

  7.   

    缺 X_CInt, md5_xx, AddUnsigned 函数的定义
      

  8.   

    md5加密工具生成的普通32位为:202CB962AC59075B964B07152D234B70;Serv-U算法:ps7432355B1BB140A0950303A15B3E0189;
    16位:AC59075B964B0715;Serv-U算法:ciB0147999E2DE4210
    我使用.net自带的md5加密方式加密后的字符串和工具的普通加密方式生成字符串是一样的。
      

  9.   

    你这加密方式估计根本不是md5加密。
    按十楼说的办法,把函数找齐。
    实际上asp.net后台是可以使用vb.net写的,语法差不多的。。
      

  10.   

     /// <summary>
            /// 返回指定长度的MD5字符串
            /// </summary>
            /// <param name="str">加密</param>
            /// <param name="code"></param>
            /// <returns></returns>
            public static string GetMD5(string str, int code)
            {
                string md5Code = FormsAuthentication.HashPasswordForStoringInConfigFile(str, "md5");
                if (code == 16)
                {
                    md5Code = md5Code.ToLower().Substring(8, 16);
                }
                return md5Code;
            }