none
MD5已过时:请问用什么方法替代? RRS feed

  • 问题

  • 做网站生成用户密码MD5都是用的 

    FormsAuthentication.HashPasswordForStoringInConfigFile(str.Trim(), "MD5");

    但net4.5下,提示

    System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(string, string)”已过时:

    请问老师们,以后用MD5该用那个方法??

    2013年9月9日 9:32

答案

  • MD5没过时,此方法从字面翻译过来是“生成密码的 HASH 值,用于存储在配置文件中”,所以是HashPasswordForStoringInConfigFile 方法不推荐使用了,而不是 MD5 不推荐使用了;并且,此方法并不只是采用 MD5 的算法,通过方法的第二个参数 passwordFormat ,你还可以指定 SHA1 算法。

    HashAlgorithm hashAlgorithm = CryptoAlgorithms.CreateSHA1() 或者 CryptoAlgorithms.CreateMD5()

    byte[] data = result =hashAlgorithm.ComputeHash(Encoding.UTF8.GetBytes(password)); // 请注意选择你的 Encoding

    2013年9月10日 8:01

全部回复

  • using System;
    using System.Security.Cryptography;
    using System.Text;
    
    MD5 md5Hash = MD5.Create();
    string source = “str”;
    string hash = GetMd5Hash(md5Hash, source);
    
    static string GetMd5Hash(MD5 md5Hash, string input)
            {
    
                // Convert the input string to a byte array and compute the hash.
                byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
    
                // Create a new Stringbuilder to collect the bytes
                // and create a string.
                StringBuilder sBuilder = new StringBuilder();
    
                // Loop through each byte of the hashed data 
                // and format each one as a hexadecimal string.
                for (int i = 0; i < data.Length; i++)
                {
                    sBuilder.Append(data[i].ToString("x2"));
                }
    
                // Return the hexadecimal string.
                return sBuilder.ToString();
            }


    e-mail:ist_te@hotmail.com

    • 已建议为答案 算神 2013年11月6日 9:31
    2013年9月10日 7:25
  • MD5没过时,此方法从字面翻译过来是“生成密码的 HASH 值,用于存储在配置文件中”,所以是HashPasswordForStoringInConfigFile 方法不推荐使用了,而不是 MD5 不推荐使用了;并且,此方法并不只是采用 MD5 的算法,通过方法的第二个参数 passwordFormat ,你还可以指定 SHA1 算法。

    HashAlgorithm hashAlgorithm = CryptoAlgorithms.CreateSHA1() 或者 CryptoAlgorithms.CreateMD5()

    byte[] data = result =hashAlgorithm.ComputeHash(Encoding.UTF8.GetBytes(password)); // 请注意选择你的 Encoding

    2013年9月10日 8:01