C# MD5加密

来源:http://www.cnblogs.com/wangbenqing/archive/2017/04/07/6676465.html
-Advertisement-
Play Games

首先,先簡單介紹一下MD5 MD5的全稱是message-digest algorithm 5(信息-摘要演算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest開發出來, 經md2、md ...


首先,先簡單介紹一下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# MD5加密

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄 1. "基本操作" 1.1. "文件操作" 1.2. "文本操作" 1.3. "目錄操作" 1.4. "SSH, 系統信息 & 網路操作" 2. "基本 Shell 編程" 2.1. "變數" 2.2. "字元串替換" 2.3. "函數" 2.4. "條件" 2.5. "迴圈" 3. "技巧" ...
  • tomcat需要配合java環境來運行,所以我們需要先安裝java(我這裡使用的是java1.7.0版本) 一、準備工作:下載java1.7.0壓縮包 1.將下載的JDK源碼包解壓,並拷貝到指定目錄 2.卸載系統安裝的JAVA環境 3.將JAVA變數添加到環境變數,使所有用戶都可以使用 3.1更新環 ...
  • open a new terminal (ctrl + alt + t) ...
  • #實時同步inotify 1、inotify簡介inotify是一種強大的,細膩度的,非同步的文件系統事件監控機制,linux內核從2.6.13起,加入了inotify支持,通過INOTIFY可以監控文件系統中添加、刪除、修改、移動等各種事件,利用這個內核介面,第三方軟體就可以監控文件系統下文件的各種 ...
  • 1、systemctl 列出正在運行的任務 2、systemctl start *.service 開啟相關服務 3、systemctl stop *.service 關閉相關服務 4、systemctl restart *.service 重啟一個服務 5、systemctl status *.s ...
  • MD5加密 1創建Md5 2.開始加密,需要將字元轉換為位元組數組 3.返回一個加密好的位元組數組 4.將位元組數組中每個元素按照指定的編碼格式解析成字元串 ...
  • 高端大氣上檔次。這次當時一個身為懵懂初中生的我對程式員這一職位的描述。那時雖不是隨處都能看到黑客大軍的波及,但至少是知道所謂的黑客爸爸的厲害,一言不合說被黑就被黑。對於懵懂的我那是一種嚮往。自己也曾想著會不會有一日自己也變得人人畏懼。於是開始踏上這條不歸路。大學選擇了軟體技術專業。寫代碼的第一天覺得 ...
  • 引用 類 api 在winform中的get 方法 我在這裡返回的是List<T> 泛型集合,在後臺獲取時聲明泛型收集即可. api 在winfrom 中的put 方法 api 在winfrom 中的Post 方法 api 在winfrom 中的Delete 方法 如果delete方法 需要傳入mo ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...