使用UTF8編碼進(jìn)行MD5計(jì)算
- 前端MD5計(jì)算代碼
或者<script src="cryptojs_v3.1.2/components/core.js" type="text/javascript" charset="utf-8"></script> <script src="cryptojs_v3.1.2/components/md5.js" type="text/javascript" charset="utf-8"></script> var md5= CryptoJS.MD5("90AZaz.,=哈嘍"); //result: 2dee0c28bee6b2e081703cf3c8aa1bea<script src="cryptojs_v3.1.2/rollups/md5.js" type="text/javascript" charset="utf-8"></script> var md5= CryptoJS.MD5("90AZaz.,=哈嘍"); //result: 2dee0c28bee6b2e081703cf3c8aa1bea - 后端MD5計(jì)算代碼(C#版)
public static string ToMd5(this string data) { var bytes = System.Text.Encoding.UTF8.GetBytes(data); var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); var md5Bytes = md5.ComputeHash(bytes); StringBuilder sb = new StringBuilder(); for (int i = 0; i < md5Bytes.Length; i++) { sb.Append(md5Bytes[i].ToString("x2")); } return sb.ToString(); } var s = "90AZaz.,=哈嘍"; var result = s.ToMd5(); // result: 2dee0c28bee6b2e081703cf3c8aa1bea - T-SQL中MD5計(jì)算
--T-SQL不支持UTF8格式字符串
使用UTF16編碼進(jìn)行MD5計(jì)算
- 前端MD5計(jì)算代碼
<script src="cryptojs_v3.1.2/components/core.js" type="text/javascript" charset="utf-8"></script> <script src="cryptojs_v3.1.2/components/enc-utf16.js" type="text/javascript" charset="utf-8"></script> <script src="cryptojs_v3.1.2/components/md5.js" type="text/javascript" charset="utf-8"></script> var md5= CryptoJS.MD5(CryptoJS.enc.Utf16LE.parse("90AZaz.,=哈嘍")); //result: 840556163aff1e6e7d8e586d453ecdae - 后端MD5計(jì)算代碼(C#版)
public static string ToMd5(this string data) { //.net中的unicode等價(jià)于utf-16,UTF-16<=>UTF-16LE,常見(jiàn)的編碼如下: // 代碼頁(yè),編碼 // 65000,UTF-7 // 65001,UTF-8 // 1200, UTF-16 // 1201, UTF-16BE // 12000,UTF-32 // 12001,UTF-32BE //所以,System.Text.Encoding.Unicode <=> System.Text.Encoding.GetEncoding(1200) //同理,System.Text.Encoding.UTF8 <=> System.Text.Encoding.GetEncoding(65001) var bytes = System.Text.Encoding.Unicode.GetBytes(data); var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); var md5Bytes = md5.ComputeHash(bytes); StringBuilder sb = new StringBuilder(); for (int i = 0; i < md5Bytes.Length; i++) { sb.Append(md5Bytes[i].ToString("x2")); } return sb.ToString(); } var s = "90AZaz.,=哈嘍"; var result = s.ToMd5(); // result: 840556163aff1e6e7d8e586d453ecdae - T-SQL中MD5計(jì)算
SELECT SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', N'90AZaz.,=哈嘍')), 3, 32) -- result: 840556163aff1e6e7d8e586d453ecdae