哈希不适于在指定状态下使用。
错误代码public class MyMd5
{
    private static MD5CryptoServiceProvider myMd5 = new MD5CryptoServiceProvider();
    /// <summary>
    /// MD5加密
    /// </summary>
    /// <param name="theText"></param>
    /// <returns></returns>
    public static string getMd5Hash(string theText)
    {
        MD5CryptoServiceProvider md5Hasher = myMd5;
        byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(theText));
        StringBuilder sBuilder = new StringBuilder();
        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }
        return sBuilder.ToString();
    }
}
请问是不是代码有问题

解决方案 »

  1.   

    直接引入using System.Web.Security;string md5=FormsAuthentication.HashPasswordForStoringInConfigFile(tPwd, "MD5")
      

  2.   

    给你些代码参考一下
     #region MD5加密
        /// <summary>
        /// MD5加密
        /// </summary>
        /// <param name="str">明码</param>
        /// <param name="code">加密后密码长度</param>
        /// <returns></returns>
        [WebMethod]
        public string Getmd5(string str, int code)
        {
            if (code == 16) //16位MD5加密(取32位加密的9~25字符) 
            {
                return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);
            }        if (code == 32) //32位加密 
            {
                return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "SHA1").ToLower();
            }        return "00000000000000000000000000000000";
        }    /// <summary>
        /// MD5加密
        /// </summary>
        /// <param name="strPwd">明码</param>
        /// <returns></returns>
        public string MD5(string strPwd)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] data = System.Text.Encoding.Default.GetBytes(strPwd);
            byte[] md5data = md5.ComputeHash(data);
            md5.Clear();
            string str = "";
            for (int i = 0; i < md5data.Length; i++)
            {
                str += md5data[i].ToString("x").PadLeft(2, '0');
            }
            return str;
        }
        #endregion
      

  3.   

       public   static string getMd5Hash(string theText)
            {
                MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider()  ;
                byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(theText));
                StringBuilder sBuilder = new StringBuilder();
                for (int i = 0; i < data.Length; i++)
                {
                    sBuilder.Append(data[i].ToString("x2"));
                }
                return sBuilder.ToString();
            }
      

  4.   


            #region Md5加密,生成16位或32位,生成的密文都是大写
            public string Md5To16(string str)
            {
                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(str)), 4, 8);
                t2 = t2.Replace("-", "");
                return t2;
            }        //// <summary>
            /// MD5 32位加密
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            public string Md5To32(string str)
            {
                string pwd = "";
                MD5 md5 = MD5.Create();
                byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
                for (int i = 0; i < s.Length; i++)
                {
                    pwd = pwd + s[i].ToString("X");
                }
                return pwd;
            }
            #endregion