在.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
/// <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。