隐藏

HashPasswordForStoringInConfigFile已过时

发布:2022/12/30 9:17:49作者:管理员 来源:本站 浏览次数:415



在.net 4.5版本下,使用System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile进行MD5加密时,会出现已过时


 


我们可以用下面的方法替代之:


/// <summary>

/// 32位MD5加密

/// </summary>

/// <param name="input"></param>

/// <returns></returns>

private static string Md5Hash(string input)

{

MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();

byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));

StringBuilder sBuilder = new StringBuilder();

for (int i = 0; i < data.Length; i++)

{

    sBuilder.Append(data[i].ToString("x2"));

}

return sBuilder.ToString();

}


~~~~~~~~~~~~~~~~~~~~~~~~~~~

1.


int str = 0xa;

WriteLine(str.ToString());//自动转换为十进制 :10

WriteLine(str.ToString("x"));//输出十六进制: a

WriteLine(str.ToString("x2"));//输出十六进制: 0a

2.


      /// <summary>

       /// 将byte型转换为字符串

       /// </summary>

       /// <param name="arrInput">byte型数组</param>

       /// <returns>目标字符串</returns>

       private string ByteArrayToString(byte[] arrInput)

       {

           int i;

           StringBuilder sOutput = new StringBuilder(arrInput.Length);

           for (i = 0; i < arrInput.Length; i++)

           {

               sOutput.Append(arrInput[i].ToString("X2"));  

           }

           //将此实例的值转换为System.String

           return sOutput.ToString();

       }


 


       /// <summary>

       /// 对接收到的数据进行解包(将接收到的byte型数组解包为Unicode字符串)

       /// </summary>

       /// <param name="recbytes">byte型数组</param>

       /// <returns>Unicode编码的字符串</returns>

       public string disPackage(byte[] recbytes)

       {

           string temp = "";

           foreach (byte b in recbytes)

               temp += b.ToString("X2") + " ";//ToString("X2") 为C#中的字符串格式控制符

           return temp;

       }


======================================================


ToString("X2") 为C#中的字符串格式控制符


X为     十六进制 

2为     每次都是两位数


比如   0x0A ,若没有2,就只会输出0xA 

假设有两个数10和26,正常情况十六进制显示0xA、0x1A,这样看起来不整齐,为了好看,可以指定"X2",这样显示出来就是:0x0A、0x1A。