Site Meter & 線上人數

tracker

部落格觀察


我的噗浪

Google Latitude

微軟認證



聯絡我 - MSN & Skype & Email



最新回應

取得 MD5 (SHA1) 的三種方法

2008/3/18 20:15| 閱讀數 : 2200 | 我要推薦 | Add Comment | 文章分類: ASP.Net C# SQLServer 訂閱

取的字串的 MD5(SHA1) 數值的三種方法:

1. 使用 System.Web.Security 命名空間
FormsAuthentication.HashPasswordForStoringInConfigFile 方法

2. 使用 System.Security.Cryptography 命名空間
MD5CryptoServiceProvider 類別、 SHA1CryptoServiceProvider 類別

3. 使用 SQL Server 2005 的內建函數
hashbytes

取得 MD5 範例的程式碼:

   1:  private void button1_Click(object sender, EventArgs e)
   2:  {
   3:      string source = "Test String";
   4:   
   5:      // Method 1: FormsAuthentication.HashPasswordForStoringInConfigFile
   6:      string m1 = FormsAuthentication.HashPasswordForStoringInConfigFile(source, "MD5").ToLower();
   7:      string m2 = GetMD5(source);
   8:      string m3 = MD5Sql(source);
   9:   
  10:      MessageBox.Show(string.Format("source: {0}, m1:{1}, m22:{2}, m3:{3}", source, m1, m2, m3));
  11:  }
  12:   
  13:  // Method 2: MD5CryptoServiceProvider
  14:  private string GetMD5(string source)
  15:  {
  16:      MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
  17:      byte[] bytValue = Encoding.UTF8.GetBytes(source);
  18:      byte[] bytHash = md5.ComputeHash(bytValue);
  19:      md5.Clear();
  20:   
  21:      StringBuilder sb = new StringBuilder();
  22:      for (int i = 0; i < bytHash.Length; i++)
  23:      {
  24:          sb.Append(bytHash[i].ToString("X").PadLeft(2, '0'));
  25:      }
  26:   
  27:      return sb.ToString().ToLower();
  28:  }
  29:   
  30:  // Method 3: SQL Server 2005 MD5
  31:  public string MD5Sql(string source)
  32:  {
  33:      string strConn = @"Connectionstring";
  34:      SqlConnection conn = new SqlConnection(strConn);
  35:      SqlCommand cmd = new SqlCommand("select master.sys.fn_VarBinToHexStr(hashbytes('MD5', @sDataIn))", conn);
  36:      cmd.Parameters.Add("@sDataIn", SqlDbType.VarChar);
  37:      cmd.Parameters["@sDataIn"].Value = source;
  38:   
  39:      conn.Open();
  40:      string s = cmd.ExecuteScalar().ToString().Substring(2).ToLower();
  41:      conn.Close();
  42:   
  43:      return s;
  44:  }



DotBlogs Tags: ASP.NET C# chhuang SQLServer


關連文章

回應

目前沒有回應.
標題 *
名稱 *
Email (將不會被顯示)
Url
回應
登入後使用進階評論
Please add 5 and 5 and type the answer here: