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

首頁 > 學院 > 開發設計 > 正文

C#:使用MD5對用戶密碼加密與解密

2019-11-14 13:40:07
字體:
來源:轉載
供稿:網友

    C#中常涉及到對用戶密碼的加密于解密的算法,其中使用md5加密是最常見的的實現方式。本文總結了通用的算法并結合了自己的一點小經驗,分享給大家。

一.使用16位、32位、64位MD5方法對用戶名加密

1)16位的MD5加密

/// <summary>/// 16位MD5加密/// </summary>/// <param name="passWord"></param>/// <returns></returns>public static string MD5Encrypt16(string password){    var md5 = new MD5CryptoServicePRovider();    string t2 = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(password)), 4, 8);    t2 = t2.Replace("-", "");    return t2;}

2)32位的MD5加密

/// <summary>/// 32位MD5加密/// </summary>/// <param name="password"></param>/// <returns></returns>public static string MD5Encrypt32(string password){    string cl = password;    string pwd = "";    MD5 md5 = MD5.Create(); //實例化一個md5對像    // 加密后是一個字節類型的數組,這里要注意編碼UTF8/Unicode等的選擇     byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));    // 通過使用循環,將字節類型的數組轉換為字符串,此字符串是常規字符格式化所得    for (int i = 0; i < s.Length; i++)    {        // 將得到的字符串使用十六進制類型格式。格式后的字符是小寫的字母,如果使用大寫(X)則格式后的字符是大寫字符         pwd = pwd + s[i].ToString("X");    }    return pwd;}

3)64位的MD5加密

public static string MD5Encrypt64(string password){    string cl = password;    //string pwd = "";    MD5 md5 = MD5.Create(); //實例化一個md5對像    // 加密后是一個字節類型的數組,這里要注意編碼UTF8/Unicode等的選擇     byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));    return Convert.ToBase64String(s);}

4)使用MD5為用戶密碼加密

/// <summary>/// 加密用戶密碼/// </summary>/// <param name="password">密碼</param>/// <param name="codeLength">加密位數</param>/// <returns>加密密碼</returns>public static string md5(string password, int codeLength){    if (!string.IsNullOrEmpty(password))    {        // 16位MD5加密(取32位加密的9~25字符)          if (codeLength == 16)        {            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5").ToLower().Substring(8, 16);        }        // 32位加密        if (codeLength == 32)        {            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5").ToLower();        }    }    return string.Empty;}

      由于MD5是不可逆的,所以加密之后就無法解密,取用戶名和密碼時候,需要再加密一邊用戶輸入的數據與數據庫中已加密的數據進行比對。如果比對結果一致,則可以判定登陸成功!代碼如下所示:

/// <summary>/// 登陸/// </summary>public Model.UserInfo UserLogOn(string USERID, string pwd, out string statusCode){    //假設已經通過用戶ID獲取到UserInfo的Model對象    Model.UserInfo model = GetModel(USERID);    if (model != null)    {        if (model.PASSWORD == MD5Encrypt64(pwd))        {            statusCode = "登陸成功";        }        else {            statusCode = “密碼錯誤”;        }    }    else    {        statusCode = "用戶不存在!";        model = null;    }       return model;}

5)通過DESCryptoServiceProvider對象對字符串進行加密解密

/// <summary>/// DES數據加密/// </summary>/// <param name="targetValue">目標值</param>/// <param name="key">密鑰</param>/// <returns>加密值</returns>public static string Encrypt(string targetValue, string key){    if (string.IsNullOrEmpty(targetValue))    {        return string.Empty;    }    var returnValue = new StringBuilder();    var des = new DESCryptoServiceProvider();    byte[] inputByteArray = Encoding.Default.GetBytes(targetValue);    // 通過兩次哈希密碼設置對稱算法的初始化向量       des.Key = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile                                            (FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5").                                                Substring(0, 8), "sha1").Substring(0, 8));    // 通過兩次哈希密碼設置算法的機密密鑰       des.IV = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile                                            (FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5")                                                .Substring(0, 8), "md5").Substring(0, 8));    var ms = new MemoryStream();    var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);    cs.Write(inputByteArray, 0, inputByteArray.Length);    cs.FlushFinalBlock();    foreach (byte b in ms.ToArray())    {        returnValue.AppendFormat("{0:X2}", b);    }    return returnValue.ToString();}

此種算法可以通過加密密鑰進行解密,解密方法如下:

/// <summary>/// DES數據解密/// </summary>/// <param name="targetValue"></param>/// <param name="key"></param>/// <returns></returns>public static string Decrypt(string targetValue, string key){    if (string.IsNullOrEmpty(targetValue))    {        return string.Empty;    }    // 定義DES加密對象    var des = new DESCryptoServiceProvider();    int len = targetValue.Length / 2;    var inputByteArray = new byte[len];    int x, i;    for (x = 0; x < len; x++)    {        i = Convert.ToInt32(targetValue.Substring(x * 2, 2), 16);        inputByteArray[x] = (byte)i;    }    // 通過兩次哈希密碼設置對稱算法的初始化向量       des.Key = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile                                            (FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5").                                                Substring(0, 8), "sha1").Substring(0, 8));    // 通過兩次哈希密碼設置算法的機密密鑰       des.IV = Encoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile                                            (FormsAuthentication.HashPasswordForStoringInConfigFile(key, "md5")                                                .Substring(0, 8), "md5").Substring(0, 8));    // 定義內存流    var ms = new MemoryStream();    // 定義加密流    var cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);    cs.Write(inputByteArray, 0, inputByteArray.Length);    cs.FlushFinalBlock();    return Encoding.Default.GetString(ms.ToArray());}

說明:本文章系Healer007原創,署名:小蘿卜!部分資料來自互聯網,如需轉載請注明出處!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品爽黄69| 国产伊人精品在线| 久久亚洲一区二区三区四区五区高| 97在线观看免费| 青青a在线精品免费观看| 成人免费视频97| 久久九九免费视频| 欧美亚洲另类制服自拍| 日韩免费在线电影| 97香蕉超级碰碰久久免费的优势| 欧美激情成人在线视频| 亚洲成人1234| 亚洲精品色婷婷福利天堂| 热re91久久精品国99热蜜臀| 久久精品视频免费播放| 亚洲国产精品小视频| 日韩在线视频免费观看高清中文| 欧美国产日韩中文字幕在线| 茄子视频成人在线| 91精品国产色综合久久不卡98口| 国产精品美女999| www.日韩.com| 色婷婷综合久久久久| 欧美精品久久久久久久免费观看| 亚洲成人激情视频| 97久久久久久| 亚洲国产中文字幕在线观看| 亚洲最新av在线| 久久精品视频一| 国产精品高潮呻吟久久av黑人| 麻豆精品精华液| 亚洲男人天堂久| 久久不射热爱视频精品| 国产精品27p| 日本a级片电影一区二区| 国产精自产拍久久久久久| 91中文字幕在线| 成人性生交大片免费看视频直播| 26uuu另类亚洲欧美日本老年| 日韩中文字幕网址| 久久艳片www.17c.com| 青青草99啪国产免费| 日韩av不卡电影| 亚洲第一二三四五区| 国产精品揄拍一区二区| 欧美一区二区.| 国产成人鲁鲁免费视频a| 亚洲男女自偷自拍图片另类| 国产主播喷水一区二区| 久久久久亚洲精品国产| 96sao精品视频在线观看| 欧美精品aaa| 国产成人精品视频在线| 亚洲区一区二区| 欧美激情视频一区二区| 国产v综合ⅴ日韩v欧美大片| 久久久久久久久久久91| 国产精品稀缺呦系列在线| 日韩视频免费中文字幕| 精品成人av一区| 欧美寡妇偷汉性猛交| 欧洲精品毛片网站| 亚洲激情小视频| 国产精品一区二区三区免费视频| 中文字幕一区电影| 2019国产精品自在线拍国产不卡| 成人免费观看网址| 国产精品电影久久久久电影网| 91啪国产在线| 欧美性感美女h网站在线观看免费| 国产成人自拍视频在线观看| 国产日韩欧美黄色| 国产精品看片资源| 97高清免费视频| 欧洲亚洲免费视频| 亚洲精品日韩激情在线电影| 欧美中文在线观看国产| 日韩亚洲综合在线| 日韩av在线免费观看一区| 国产男女猛烈无遮挡91| 亚洲精品一区二三区不卡| 日产日韩在线亚洲欧美| 欧美夜福利tv在线| 欧美成人一区在线| 亚洲欧洲在线观看| 欧美电影在线免费观看网站| 日韩欧美精品在线观看| 91国在线精品国内播放| 九九综合九九综合| 国产亚洲精品久久久久久777| 欧美午夜影院在线视频| 久久国产精品偷| 日韩在线观看免费av| 91美女片黄在线观| 亚洲免费av网址| 欧美成aaa人片在线观看蜜臀| 欧美性jizz18性欧美| 久久99热精品这里久久精品| 成人黄色av网| 亚洲精品在线看| 26uuu另类亚洲欧美日本老年| 欧美黄色小视频| 九九久久久久久久久激情| 国产精品一二三在线| 欧美国产在线电影| 久久精品视频99| 91理论片午午论夜理片久久| 久久久精品一区二区| 美日韩精品免费视频| 国产成人在线一区二区| 成人情趣片在线观看免费| 日韩精品一区二区三区第95| 久久99国产精品自在自在app| 久久久久久国产精品久久| 精品高清一区二区三区| 亚洲欧美一区二区三区四区| 亚洲美女免费精品视频在线观看| 久久亚洲精品国产亚洲老地址| 亚洲女在线观看| 欧美老女人xx| 久久亚洲欧美日韩精品专区| 日韩麻豆第一页| 久久亚洲精品一区| 欧美日韩一区二区在线播放| 亚洲自拍偷拍第一页| 成人免费xxxxx在线观看| 国产精品九九九| 国产精品欧美一区二区| 欧美成人精品在线视频| 欧美美最猛性xxxxxx| 亚洲精品aⅴ中文字幕乱码| 亚洲图片欧美日产| 亚洲自拍另类欧美丝袜| 三级精品视频久久久久| 这里只有精品在线观看| 91国产在线精品| 91人人爽人人爽人人精88v| 亚洲精品国产精品自产a区红杏吧| 日韩av网站在线| 亚洲欧美精品伊人久久| 亚洲天堂免费观看| 欧美香蕉大胸在线视频观看| 欧美激情性做爰免费视频| 亚洲一区999| 日韩精品极品在线观看| 国产日韩欧美中文在线播放| 日韩精品免费在线视频| 18久久久久久| 热久久99这里有精品| 欧美亚洲第一区| 亚洲欧美另类在线观看| 超碰97人人做人人爱少妇| 国产热re99久久6国产精品| 国产一区二区视频在线观看| 欧美亚洲另类在线| 久久久久999| 亚洲精选一区二区| 欧美日韩中文在线| 精品夜色国产国偷在线| 欧美性xxxxx| 欧美成人第一页| 亚洲影视中文字幕| 日韩一中文字幕| 国产69精品久久久久久|