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

首頁 > 編程 > C# > 正文

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

2020-01-24 01:20:08
字體:
來源:轉載
供稿:網友

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());}

以上內容是基于C#對用戶密碼使用MD5加密與解密的全部敘述,希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品高清美女精品国产区| 欧美极品少妇xxxxⅹ免费视频| 久久成年人视频| 久久亚洲国产精品| 国产精品6699| 欧美视频在线免费| 亚洲精品720p| 久久久久免费精品国产| 精品中文字幕在线观看| 中文字幕成人精品久久不卡| 日韩电影在线观看免费| 中文字幕一精品亚洲无线一区| 欧美日韩高清区| 欧美精品免费在线观看| 91久久在线播放| 久久久久久国产精品| 91sao在线观看国产| 两个人的视频www国产精品| 亚洲人午夜精品免费| 久久理论片午夜琪琪电影网| 国产香蕉一区二区三区在线视频| 九九热精品视频在线播放| 国产精品白嫩初高中害羞小美女| 91久久在线播放| 国产成人精品久久二区二区| 欧美激情亚洲另类| 国产精品极品美女在线观看免费| 怡红院精品视频| 日韩最新中文字幕电影免费看| 97国产真实伦对白精彩视频8| 欧美午夜视频在线观看| 日韩福利伦理影院免费| 亚洲黄色有码视频| 欧美精品电影免费在线观看| 性日韩欧美在线视频| 国产精品久久久久9999| 亚洲高清久久久久久| 国产精品偷伦视频免费观看国产| 精品中文字幕在线观看| 欧美成人合集magnet| 成人免费观看a| 欧美裸身视频免费观看| 久久影视电视剧免费网站| 亚洲free性xxxx护士hd| 日韩成人中文字幕| 久久影视电视剧免费网站| 欧美成人亚洲成人日韩成人| 久久久999精品视频| 久久综合久久八八| 九九综合九九综合| 久久99精品久久久久久噜噜| 日韩av男人的天堂| 日韩在线视频导航| 欧美孕妇与黑人孕交| 成人性教育视频在线观看| 51精品在线观看| 日韩精品高清在线| 亚洲国产精品高清久久久| 亚洲国产小视频| 北条麻妃一区二区三区中文字幕| 亚洲深夜福利网站| 亚洲色图欧美制服丝袜另类第一页| 成人精品aaaa网站| 北条麻妃一区二区三区中文字幕| 成人午夜激情免费视频| 91精品国产综合久久久久久蜜臀| 久久精品99久久久久久久久| 欧美一级bbbbb性bbbb喷潮片| 国产精品视频免费观看www| 欧美日韩综合视频网址| 美女福利精品视频| 成人亚洲综合色就1024| 国产香蕉一区二区三区在线视频| 亚洲精品永久免费精品| 国产精品视频久久| 色樱桃影院亚洲精品影院| 欧美中文字幕视频| 国产精品久久久久久久久| 中文字幕日韩免费视频| 欧美成人精品在线视频| 国产精品丝袜久久久久久不卡| 麻豆成人在线看| 欧美在线一级va免费观看| 精品久久久在线观看| 欧美日韩国产va另类| 国产69精品久久久久99| 亚洲综合成人婷婷小说| 欧美亚洲国产日韩2020| 亚洲人成伊人成综合网久久久| 疯狂做受xxxx欧美肥白少妇| 亚洲免费视频在线观看| 亚洲精品电影网| 久久久精品国产网站| 国产www精品| 日韩经典一区二区三区| 亚洲欧美综合图区| 亚洲精品成a人在线观看| 日韩国产欧美精品一区二区三区| 国产精品电影观看| 亚洲成人1234| 久久久av电影| 欧美激情在线观看视频| 久久久久亚洲精品| 欧美极品第一页| 一本一本久久a久久精品牛牛影视| 69久久夜色精品国产69乱青草| 97视频在线观看播放| 欧美电影免费观看电视剧大全| 国产成人精品优优av| 自拍偷拍亚洲在线| 欧美性在线观看| 色午夜这里只有精品| 91美女片黄在线观看游戏| 精品一区电影国产| 亚洲自拍另类欧美丝袜| 色与欲影视天天看综合网| 久久精品国产亚洲一区二区| 性欧美办公室18xxxxhd| 久久五月情影视| 亚洲黄色片网站| zzijzzij亚洲日本成熟少妇| 欧美激情免费在线| 国产精品女人久久久久久| 欧美日韩国产影院| 蜜月aⅴ免费一区二区三区| 成人黄色在线免费| 久久成年人视频| 伊人伊人伊人久久| 青青草国产精品一区二区| 久久高清视频免费| 91探花福利精品国产自产在线| 国产999精品久久久影片官网| 97在线观看视频国产| 久久视频精品在线| 日韩视频永久免费观看| 欧美在线不卡区| 国产精品自在线| 久久躁日日躁aaaaxxxx| 岛国av一区二区在线在线观看| 亚洲男女自偷自拍图片另类| 欧美在线视频一区二区| 国产精品电影久久久久电影网| 国产成人激情小视频| 国产精品美女免费视频| 欧美成年人网站| 国内揄拍国内精品少妇国语| 色婷婷成人综合| 国产视频久久网| 亚洲一区二区三区毛片| 日韩欧美aⅴ综合网站发布| 亚洲欧美激情在线视频| 岛国av一区二区三区| 日韩在线小视频| 日韩一区视频在线| 国产中文日韩欧美| 日韩精品高清在线观看| 欧美老少做受xxxx高潮| 国产精品久久久久久久久久三级| 91亚洲精品久久久| 久久久久久九九九| 久久五月天综合| 亚洲国产高潮在线观看| 欧美日韩国产精品一区二区三区四区| 欧美日韩亚洲天堂|