跨端使用MD5的兩種編碼方案總結(jié)

使用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
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容