JDP 發表於 2014-8-5 11:19:18

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]
查看完整版本: C# MD5 <=> MSSQL MD5