亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

徹底解決ASP.NET MD5加密中文結果和ASP不一致的問題

2024-07-10 13:19:36
字體:
來源:轉載
供稿:網友
當要進行MD5加密的字符串不含中文時,那么ASP.NET的加密結果和ASP是一致的:

復制代碼 代碼如下:


Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile("www.mzwu.com", "MD5"));
//結果:D66E1F138689B9B5AA4C520D9EAFFB61



復制代碼 代碼如下:


Response.Write(MD5("www.mzwu.com",32))
'結果:d66e1f138689b9b5aa4c520d9eaffb61


當要進行MD5加密的字符串含中文時,兩者的加密結果就不一致了:

復制代碼 代碼如下:


Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile("木子屋", "MD5"));
//結果:34D9CBD5164C47058DFA3AF832E2D1DC



復制代碼 代碼如下:


Response.Write(MD5("木子屋",32))
'結果:0a40a90190da023ae7aa17771663a41e


我們知道,ASP.NET默認使用utf-8編碼格式,而ASP使用的是gb2312編碼格式,正是由于這編碼格式不同,才導致了兩者對中文加密結果的不同。下邊我們看看怎么讓ASP.NET的編碼結果和ASP一樣,那也就意味著要讓ASP.NET采用gb2312編碼格式,這點FormsAuthentication.HashPasswordForStoringInConfigFile()方法是辦不到的,我們得使用System.Security.Cryptography.MD5CryptoServiceProvider對象的ComputeHash方法來進行加密:

復制代碼 代碼如下:


MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
Response.Write(BitConverter.ToString(MD5.ComputeHash(Encoding.GetEncoding("gb2312").GetBytes("木子屋"))).Replace("-", ""));
//結果:0A40A90190DA023AE7AA17771663A41E


若要再使用utf-8加密也非常容易:

復制代碼 代碼如下:


MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
Response.Write(BitConverter.ToString(MD5.ComputeHash(Encoding.GetEncoding("utf-8").GetBytes("木子屋"))).Replace("-", ""));
//結果:34D9CBD5164C47058DFA3AF832E2D1DC


問題似乎是比較完美的解決了,我們再來完善一下:當要加密的字符串是從其他頁面傳進來時,其他頁面采用的編碼格式可能是gb2312,可能是utf-8,還可能是其他的編碼格式,怎么解決呢?你可能會覺得很簡單啊,使用它先前的編碼格式進行加密不就行了?實際測試中你會發現兩個很嚴重的問題:
1. 我們無從知道參數傳過來時是使用什么編碼格式;
2. 如果兩個頁面使用的編碼方式不一樣,那么Request接收到的參數值會亂碼,那就不要談加密了;

  問題1比較好解決,要求對方傳參數的同時必須多加一個參數說明采用的編碼格式,問題2的解決方法是不使用Request直接接收參數值,廢話不多說了,看下邊的函數:

復制代碼 代碼如下:


/**//// <summary>
/// 對字符串進行MD5加密
/// </summary>
/// <param>要加密的字符串</param>
/// <param>字符串編碼格式</param>
/// <example>str = MD5("木子屋","gb2312");</example>
/// <returns></returns>
public string MD5(string text, string charset)
{
    return (MD5(text, charset, false));
}

/**//// <summary>
/// 對字符串或參數值進行MD5加密
/// </summary>
/// <param>要加密的字符串或參數名稱</param>
/// <param>字符串編碼格式</param>
/// <param>加密字符串類型 true:參數值 false:字符串</param>
/// <returns></returns>
public string MD5(string text, string charset, bool isArg)
{
    try
    {
        MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();

        if (isArg)
        {
            NameValueCollection Collect = HttpUtility.ParseQueryString(Request.Url.Query, Encoding.GetEncoding(charset));//使用Collect接收參數值
            if (Collect[text] != null)
            {
                return BitConverter.ToString(MD5.ComputeHash(Encoding.GetEncoding(charset).GetBytes(Collect[text].ToString()))).Replace("-", "");
            }
        }
        else
        {
            return BitConverter.ToString(MD5.ComputeHash(Encoding.GetEncoding(charset).GetBytes(text))).Replace("-", "");
        }
    }
    catch { }

    return string.Empty;
}


說明1:上邊代碼需要引入的命名空間

復制代碼 代碼如下:


using System.Text;
using System.Web.Security;
using System.Security.Cryptography;
using System.Collections.Specialized;


說明2:32位密文如何轉化成16位?
16位密文是32位密文的9到24位字符。如:"0a40a90190da023ae7aa17771663a41e"→"90da023ae7aa1777"
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一区二区大胆人体摄影专业网站| 九九热精品在线| 国产69精品久久久久9999| 欧美性开放视频| 亚洲国产精品va在线| 亚洲美女久久久| 亚洲大胆人体在线| 91精品在线一区| 中文字幕在线日韩| 日本国产一区二区三区| 97久久精品国产| 欧美精品电影免费在线观看| 国产精品高清在线观看| 亚洲日本中文字幕免费在线不卡| 国产精品爽爽爽| 久久久久久久av| 欧美大荫蒂xxx| 96国产粉嫩美女| 亚洲一区999| 亚洲国产私拍精品国模在线观看| 欧美一区二区三区四区在线| 激情成人在线视频| 久久精品国产亚洲一区二区| 亚洲成av人片在线观看香蕉| 欧美在线中文字幕| 国产精品九九九| 欧美激情xxxx性bbbb| 久久久久久中文字幕| 久久精品久久久久久国产 免费| 狠狠色香婷婷久久亚洲精品| 成人激情电影一区二区| 亚洲摸下面视频| 亚洲色图激情小说| 亚洲毛片在线免费观看| 亚洲精品xxx| 日韩高清中文字幕| 久久久成人精品视频| 亚洲新声在线观看| 亚洲影院污污.| 欧美另类在线播放| 精品动漫一区二区| 欧美精品日韩www.p站| 国产精品视频成人| 亚洲欧美一区二区精品久久久| 综合国产在线视频| 亚洲国语精品自产拍在线观看| 丝袜亚洲欧美日韩综合| 日韩欧美在线第一页| 国产亚洲欧美日韩精品| 91在线网站视频| 日韩在线小视频| 亚洲色图综合久久| 免费99精品国产自在在线| 毛片精品免费在线观看| 亚洲精品久久久久久久久| 成人激情综合网| 亚洲一区二区三区xxx视频| 亚洲一区二区三区四区视频| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品吊钟奶在线| 中文字幕亚洲无线码a| 亚洲午夜女主播在线直播| 日本a级片电影一区二区| 欧美成人免费全部观看天天性色| 国产脚交av在线一区二区| 国模精品视频一区二区三区| 日韩成人中文字幕在线观看| 日韩视频精品在线| 91国语精品自产拍在线观看性色| 欧美精品亚州精品| 国产精品免费观看在线| 日韩精品视频在线播放| 欧美理论在线观看| 国产成人一区二区三区小说| 亚洲综合大片69999| 日韩精品极品在线观看播放免费视频| 亚洲人成在线观看网站高清| 国模gogo一区二区大胆私拍| 亚洲第一级黄色片| 亚洲自拍偷拍一区| 亚洲欧洲美洲在线综合| 欧美在线观看视频| 91在线色戒在线| 亚洲第一二三四五区| 麻豆成人在线看| 亚洲欧美日韩国产中文| 亚洲999一在线观看www| 91在线观看欧美日韩| 一区二区三区在线播放欧美| 精品中文字幕视频| 精品一区二区三区四区| 亚洲国产高清福利视频| 欧美大片在线免费观看| 欧美一级大胆视频| 精品国产精品三级精品av网址| 久久99精品国产99久久6尤物| 亚洲老头同性xxxxx| 国产精品夫妻激情| 欧美日韩一区二区在线| 97av在线播放| 欧美成人午夜激情| y97精品国产97久久久久久| 亚洲国产欧美一区二区三区久久| 久久久视频在线| 国产精品扒开腿做爽爽爽的视频| 亚洲免费伊人电影在线观看av| 久久精品成人一区二区三区| 成人在线视频网| 国产欧美一区二区三区久久人妖| 亚洲精品一区二区久| 色狠狠av一区二区三区香蕉蜜桃| 一本一本久久a久久精品牛牛影视| 动漫精品一区二区| 国产亚洲欧美视频| 欧美一级片久久久久久久| 亚洲视频欧美视频| 九九久久综合网站| 亚洲第一区第二区| 亚洲一区二区久久久| 久久在线精品视频| 欧美精品videossex性护士| 日韩极品精品视频免费观看| 国产成人高潮免费观看精品| 成人激情视频在线观看| 国产在线拍偷自揄拍精品| 另类专区欧美制服同性| 国产精品天天狠天天看| 懂色av影视一区二区三区| 日韩视频第一页| 日本亚洲精品在线观看| 中文在线资源观看视频网站免费不卡| 欧美刺激性大交免费视频| 日日骚久久av| 亚洲欧美日韩在线高清直播| 欧美日韩亚洲网| 色爱精品视频一区| 九色91av视频| 久久视频在线看| 国产成人黄色av| 91免费观看网站| 日韩免费在线免费观看| 亚洲色图色老头| 亚洲一区二区福利| 欧美乱人伦中文字幕在线| 欧美黑人极品猛少妇色xxxxx| 狠狠色狠色综合曰曰| 欧美亚洲另类制服自拍| 日韩免费在线免费观看| 欧美www视频在线观看| 91tv亚洲精品香蕉国产一区7ujn| 午夜精品一区二区三区av| 欧美激情第1页| 欧美大片在线免费观看| 精品无码久久久久久国产| 亚洲精品国产精品国自产在线| 久久久精品视频成人| 亚洲国产精品va在线观看黑人| 色噜噜国产精品视频一区二区| 精品久久香蕉国产线看观看亚洲| 亚洲国产精品久久久久秋霞不卡| 26uuu另类亚洲欧美日本一| 国产视频久久久久| 日韩在线视频观看| 国产成人高潮免费观看精品|