国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - 詳解C#實現MD5加密的示例代碼

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

2021-12-16 13:10shenghui188 C#

本篇文章主要介紹了C#實現MD5加密的示例代碼,詳細的介紹了幾種方法,具有一定的參考價值,有興趣的可以了解一下。

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具有很好的安全性(因為它具有不可逆的特征,加過密的密文經過解密后和加密前的東東相同的可能性極小)

引用

?
1
2
using System.Security.Cryptography;
using System.Text;

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

?
1
2
3
4
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加密(上)

?
1
2
3
4
5
6
string a; //加密前數據
string b; //加密后數據
b=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(a,"MD5")
 
using  System;
using  System.Security.Cryptography;

方法2

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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加密

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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位加密實例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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;
     }
   }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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中,語句如下:

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

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

如果登錄查詢則要:

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
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)可以直接調用:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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";
      }
 
    }
  }

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

原文鏈接:http://www.cnblogs.com/dgjack/archive/2010/12/30/1921492.html

延伸 · 閱讀

精彩推薦
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品第一 | 国产高清视频一区 | 日韩精品一区二区三区四区 | 免费在线一区二区 | 精品在线观看一区 | 亚洲精品久久久久久一区二区 | 超碰在线国产 | 国产精品美女高潮无套久久 | 色婷婷综合久久久中字幕精品久久 | 成人高清网站 | 国产三级黄色毛片 | 三区在线| 国产精品成人一区二区三区夜夜夜 | 九九热在线观看 | 国产精品3区 | 伊人久久精品久久亚洲一区 | 欧美性猛交xxxx黑人猛交 | 国产最新视频 | 日韩在线免费视频 | 日韩精品在线观看视频 | 日本不卡一区二区三区在线观看 | 久久青草国产 | 亚洲欧美视频在线 | 久久九| 久久久精品在线 | 激情五月综合 | 亚洲一区中文字幕 | 91麻豆精品国产91久久久久久久久 | 不用播放器看av | 欧美一级免费看 | 亚洲国产精品99久久久久久久久 | 亚洲精品黄色 | 中文字幕在线免费观看 | 欧美在线网 | 在线色网站 | 国产真实精品久久二三区 | 69免费网站 | 国产视频一区二区在线 | 欧美日韩亚洲综合 | 精品成人网 | 中文字幕综合在线 |