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

首頁 > 編程 > C# > 正文

詳解C#實現MD5加密的示例代碼

2020-01-24 00:52:07
字體:
來源:轉載
供稿:網友

C#實現MD5加密,具體如下:

方法一

首先,先簡單介紹一下MD5

MD5的全稱是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest開發出來, 經md2、md3和md4發展而來。

MD5具有很好的安全性(因為它具有不可逆的特征,加過密的密文經過解密后和加密前的東東相同的可能性極小)

引用

using System.Security.Cryptography;using System.Text;

具體代碼如下(寫在按鈕的Click事件里):

byte[] result = Encoding.Default.GetBytes(this.tbPass.Text.Trim());  //tbPass為輸入密碼的文本框MD5 md5 = new MD5CryptoServiceProvider();byte[] output = md5.ComputeHash(result);this.tbMd5pass.Text = BitConverter.ToString(output).Replace("-",""); //tbMd5pass為輸出加密文本的文本框

方法二

C# md5加密(上)

string a; //加密前數據string b; //加密后數據b=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(a,"MD5")using  System;using  System.Security.Cryptography;

方法2

public  static  string  GetMD5(string  myString)  {MD5  md5   =  new  MD5CryptoServiceProvider();byte[]  fromData  =  System.Text.Encoding.Unicode.GetBytes(myString);byte[]  targetData  =  md5.ComputeHash(fromData);string  byte2String  =  null;for  (int  i=0;  i<targetData.Length;  i++)  {byte2String  +=  targetData[i].ToString("x");}return  byte2String;} using  System.Security.Cryptography;///  <summary>///  給一個字符串進行MD5加密///  </summary>///  <param  name="strText">待加密字符串</param>///  <returns>加密后的字符串</returns>public  static  string  MD5Encrypt(string  strText){  MD5  md5  =  new  MD5CryptoServiceProvider();byte[]  result  =  md5.ComputeHash(System.Text.Encoding.Default.GetBytes(strText));return  System.Text.Encoding.Default.GetString(result);} 

C# MD5加密

using System.Security.Cryptography;private void btnOK_Click(object sender, System.EventArgs e){  string strConn = "server=192.168.0.51;database=chengheng;User id=sa; password=123";  if(texName.Text.Trim()=="")  {  this.RegisterStartupScript("sf","<script language='javascript'>alert('用戶名不能為空');document.all('texName').focus()</script>");  return;  }  else if(texPassword.Text.Trim()=="")  {  this.RegisterStartupScript("sfs","<script language='javascript'>alert('密碼不能為空');document.all('texPassword').focus()</script>");  return;  }  else  {  //將獲取的密碼加密與數據庫中加了密的密碼相比較  byte[] by = md5.ComputeHash(utf.GetBytes(texPassword.Text.Trim()));  string resultPass = System.Text.UTF8Encoding.Unicode.GetString(by);  conn.ConnectionString=strConn;  SqlCommand comm = new SqlCommand();  string name = texName.Text.Trim().ToString();  comm.CommandText="select Ruser_pwd,Ruser_nm from Ruser where Accountno = @name";  comm.Parameters.Add("@name",SqlDbType.NVarChar,40);  comm.Parameters["@name"].Value=name;  try  {      conn.Open();   comm.Connection=conn;   SqlDataReader dr=comm.ExecuteReader();   if(dr.Read())   {   //用戶存在,對密碼進行檢查   if(dr.GetValue(0).Equals(resultPass))   {    string user_name=dr.GetValue(1).ToString();    string user_Accountno=texName.Text.Trim();    Session["logon_name"]=user_name;    Session["logon_Accountno"]=user_Accountno;    //登錄成功,進行頁面導向   }   else   {    this.RegisterStartupScript("wp","<script language='javascript'>alert('密碼錯誤,請檢查。')</script>");   }      }   else   {   this.RegisterStartupScript("nu","<script language=javascript>alert('用戶名不存在,請檢查。')</script>");   }  }  catch(Exception exec)  {    this.RegisterStartupScript("wc","<script language=javascript>alert('網絡連接有異,請稍后重試。')</script>");  }   finally  {   conn.Close();  }  }}

方法三

C#開發筆記 

一、C# MD5-16位加密實例,32位加密實例(兩種方法)

環境:vs.net2005/sql server2000/xp測試通過

1.MD5 16位加密實例

using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;namespace md5{  class Program  {    static void Main(string[] args)    {       Console.WriteLine(UserMd5("8"));       Console.WriteLine(GetMd5Str("8"));     }    /**//// <summary>    /// MD5 16位加密 加密后密碼為大寫    /// </summary>    /// <param name="ConvertString"></param>    /// <returns></returns>    public static string GetMd5Str(string ConvertString)    {       MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();      string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8);       t2 = t2.Replace("-", "");      return t2;     } /**//// <summary>    /// MD5 16位加密 加密后密碼為小寫    /// </summary>    /// <param name="ConvertString"></param>    /// <returns></returns>    public static string GetMd5Str(string ConvertString)    {       MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();      string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8);       t2 = t2.Replace("-", "");      t2 = t2.ToLower();       return t2;     }    /**//// <summary>    /// MD5 32位加密    /// </summary>    /// <param name="str"></param>    /// <returns></returns>    static string UserMd5(string str)    {      string cl = str;      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;     }   }}
using System.Security.Cryptography;using System.Text; public static string StringToMD5Hash(string inputString)    {      MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();      byte[] encryptedBytes = md5.ComputeHash(Encoding.ASCII.GetBytes(inputString));      StringBuilder sb = new StringBuilder();      for (int i = 0; i < encryptedBytes.Length; i++)      {        sb.AppendFormat("{0:x2}", encryptedBytes[i]);      }      return sb.ToString();    }

二、首先在界面中引入:using System.Web.Security;

假設密碼對話框名字password,對輸入的密碼加密后存入變量pwd中,語句如下:

 string pwd = FormsAuthentication.HashPasswordForStoringInConfigFile(password.Text, "MD5");

如果要錄入則錄入pwd,這樣數據庫實際的密碼為202*****等亂碼了。

如果登錄查詢則要:

select username,password from users where username='"+ UserName.Text +"' and password='"+ pwd +"'

因為MD5不能解密,只能把原始密碼加密后與數據庫中加密的密碼比較

三、C# MD5 加密方法 16位或32位

 public string md5(string str,int code)  {   if(code==16) //16位MD5加密(取32位加密的9~25字符)   {     return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16) ;   }   else//32位加密   {     return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower();   }  } 

四、做一個網站時,必然涉及用戶登錄,用戶登錄必然涉及密碼,密碼必然涉及安全,安全必然涉及加密。

加密現時最流行也是據說最安全的算法是MD5算法,MD5是一種不可逆的算法,也就是 明文經過加密后,根據加密過的密文無法還原出明文來。

目前有好多網站專搞MD5破密,百度上搜一下MD5就搜出一大堆了,今天早上無聊試了幾個破密網站,6位以內純數字密碼的MD5密文可以還原出明文,長點的或帶字符的就不行了。他們是采用窮舉對比的,就是說把收錄到的明文和密文放到數據庫里,通過密文的對比來確定明文,畢竟收錄的數據有限,所以破解的密碼很有限。

扯遠了,搞破密MD5需要大量的MONEY,因為要一個運算得超快的計算機和一個查找性能超好的數據庫和超大的數據庫收錄。但搞加密就比較簡單。以下是我用C#寫的一個MD5加密的方法,用到.NET中的方法, 通過MD5_APP.StringToMD5(string str, int i)可以直接調用:

public class MD5_APP{ public MD5_APP() {    }  public static string StringToMD5(string str, int i)  {    //獲取要加密的字段,并轉化為Byte[]數組    byte[] data = System.Text.Encoding.Unicode.GetBytes(str.ToCharArray());    //建立加密服務    System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();    //加密Byte[]數組    byte[] result = md5.ComputeHash(data);    //將加密后的數組轉化為字段    if (i == 16 && str != string.Empty)    {      return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);    }    else if (i == 32 && str != string.Empty)    {      return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();    }    else    {      switch (i)      {        case 16: return "000000000000000";        case 32: return "000000000000000000000000000000";        default: return "請確保調用函數時第二個參數為16或32";      }    }  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久久久亚洲精品| 最近免费中文字幕视频2019| 日韩中文字幕av| 琪琪亚洲精品午夜在线| 日本久久久久亚洲中字幕| www.欧美精品| 欧日韩不卡在线视频| 久久精品视频在线播放| 在线日韩精品视频| 97免费视频在线| 中文字幕日韩在线观看| 精品一区二区三区四区在线| 中文字幕久热精品视频在线| 日本道色综合久久影院| 不卡毛片在线看| 热门国产精品亚洲第一区在线| 亚洲精品中文字幕女同| 亚洲激情久久久| 亚洲韩国欧洲国产日产av| 亚洲女成人图区| 日韩美女av在线| 红桃av永久久久| 欧美午夜激情在线| 菠萝蜜影院一区二区免费| 欧美性生交大片免费| 亚洲一区二区黄| 日韩精品视频观看| 日韩精品在线影院| 57pao国产精品一区| 国产91精品最新在线播放| 91精品国产自产在线观看永久| 欧美精品在线观看| 日韩在线视频线视频免费网站| 97在线免费观看| 欧美日韩午夜激情| 国产日韩av高清| 国产欧美日韩中文字幕在线| 日韩av片电影专区| 日韩欧美aⅴ综合网站发布| 亚洲精品福利在线| 狠狠躁夜夜躁人人爽天天天天97| 色偷偷亚洲男人天堂| 精品久久久久久久中文字幕| 欧美国产高跟鞋裸体秀xxxhd| 国产精品成av人在线视午夜片| 亚洲精品ady| 亚洲色图国产精品| 免费av在线一区| 亚洲第一页自拍| 日韩视频免费中文字幕| 亚洲日本中文字幕| 欧美日韩国产在线播放| 97婷婷大伊香蕉精品视频| 热久久这里只有| 国产一区玩具在线观看| 欧美国产亚洲视频| 91国产在线精品| 国产精品免费久久久久影院| 国产日韩在线观看av| 欧美亚洲视频在线观看| 在线播放日韩精品| 亚洲国产中文字幕在线观看| 国产91精品久久久久| 成人免费视频在线观看超级碰| 欧美极品少妇全裸体| 久色乳综合思思在线视频| 一区二区三区美女xx视频| 狠狠躁夜夜躁久久躁别揉| 国产91精品青草社区| 欧美性高跟鞋xxxxhd| 中文字幕精品—区二区| 欧美一乱一性一交一视频| 亚洲精品综合精品自拍| 欧美成人精品在线视频| 视频直播国产精品| 亚洲亚裔videos黑人hd| 亚洲二区在线播放视频| 成人综合网网址| 亚洲欧美在线播放| 7m精品福利视频导航| 日韩在线一区二区三区免费视频| 欧美激情2020午夜免费观看| 欧美放荡办公室videos4k| 亚州精品天堂中文字幕| 国产区亚洲区欧美区| 国产亚洲精品久久久久久| 亚洲在线观看视频网站| 中文字幕日韩欧美在线视频| 一本一本久久a久久精品牛牛影视| 国产第一区电影| 亚洲国产欧美精品| 亚洲在线视频观看| 日韩中文字幕在线观看| 欧美日韩精品在线| 国产在线一区二区三区| 久久夜色精品国产亚洲aⅴ| 国产一区二区美女视频| 国产精品第七影院| 欧美一二三视频| 成人免费网视频| 日韩av一区二区在线观看| 精品二区三区线观看| 亚洲精品动漫100p| 久久国产精品首页| 国产午夜精品一区理论片飘花| 98精品国产自产在线观看| 日韩精品在线视频| 欧美大尺度电影在线观看| 日韩精品亚洲精品| 日韩精品极品在线观看播放免费视频| 欧美激情精品久久久久久蜜臀| 亚洲欧美日韩一区二区三区在线| 国外色69视频在线观看| 欧美成人三级视频网站| 国产成人精品久久二区二区91| 国产精品香蕉在线观看| 欧美午夜丰满在线18影院| 亚洲欧美日韩天堂一区二区| 亚洲国产古装精品网站| 精品久久香蕉国产线看观看gif| 国产日韩欧美中文在线播放| 亚洲精品456在线播放狼人| 影音先锋欧美在线资源| 亚洲精品中文字幕有码专区| 欧美大片免费看| 国产精品久久久av久久久| 亚洲人成网7777777国产| 欧美日韩国产黄| 国产不卡在线观看| 国产精品入口免费视频一| 中文字幕日韩免费视频| 国产亚洲激情视频在线| 成人免费福利视频| 欧美日韩综合视频网址| 狠狠爱在线视频一区| 一区二区三区无码高清视频| 91精品视频播放| 国产精品99久久久久久久久久久久| 中文字幕欧美精品日韩中文字幕| 欧美日韩视频在线| 成人av.网址在线网站| 7777精品视频| 成人a在线观看| 国产成人福利夜色影视| 国产免费一区二区三区香蕉精| 国产成人免费av电影| 日韩电影中文字幕在线观看| 欧美成人在线免费| 精品中文视频在线| 国产欧美精品久久久| 国产大片精品免费永久看nba| 96精品久久久久中文字幕| 青青草国产精品一区二区| 成人黄色片在线| 91在线中文字幕| 久久人人爽人人| 亚洲人成在线播放| 亚洲精品色婷婷福利天堂| 欧美专区福利在线| 精品国偷自产在线视频99| 亚洲成人a级网| 这里只有精品视频在线| 国产网站欧美日韩免费精品在线观看| 欧美日韩亚洲成人|