C# MD5 <=> MSSQL MD5
public string CalculateMD5Hash(string input){
//MD5 Encode但不轉Base64 String
// MSSQL 使用
// select SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5','加密字串')),3,32)
// 可得同樣結果
// step 1, calculate MD5 hash from input
MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
byte[] hash = md5.ComputeHash(inputBytes);
// step 2, convert byte array to hex string
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash.ToString("x2"));
}
return sb.ToString();
}
[*]以上範例是用ASCII方式進行編碼,如果要修改為Unicode,則要改為System.Text.Encoding.Unicode.GetBytes,相對的MSSQL的加密字串前面也要加N Ex: N'加密字串'。
[*]如果要將產生的MD5改為大寫輸出,則要修改 sb.Append(hash.ToString("x2")) 中的 x2,將之改為 X2,就會變大寫。
Reference:
C# - How do I calculate a MD5 hash from a string?
http://blogs.msdn.com/b/csharpfaq/archive/2006/10/09/how-do-i-calculate-a-md5-hash-from-a-string_3f00_.aspx
頁:
[1]