2011-08-18 123 views
1

現在我剛保存的密碼,因爲它是如何加密密碼並將其保存在MySQL數據庫中。

protected void Save_Click(object sender, EventArgs e) 
    { 

     string userName = Label13.Text; 
     DateTime now = DateTime.Now; 
     MySqlConnection connectionString = new MySqlConnection("Server=127.0.0.1;Database=surelyknown;Uid=root"); 
     connectionString.Open(); 
     MySqlDataAdapter adapter = new MySqlDataAdapter(); 
     MySqlCommand command = new MySqlCommand(); 
adapter.InsertCommand = new MySqlCommand("INSERT INTO tbl_user (FirstName,LastName,Email,U_Password,CompanyName,UserPermission,PhoneNumber,Created,Modified,Active,CreatedBy,tbl_organisation_OrganisationID) VALUES(@FirstName,@LastName,@Email,@U_Password,@CompanyName,@UserPermission,@PhoneNumber,@Created,@Modified,@Active,@CreatedBy,@tbl_organisation_OrganisationID)", connectionString); 
    adapter.InsertCommand.Parameters.Add("@FirstName", MySqlDbType.VarChar).Value = FirstName.Text; 
      adapter.InsertCommand.Parameters.Add("@LastName", MySqlDbType.VarChar).Value = Surname.Text; 
      adapter.InsertCommand.Parameters.Add("@Email", MySqlDbType.VarChar).Value = Email.Text; 
      adapter.InsertCommand.Parameters.Add("@U_Password", MySqlDbType.VarChar).Value = Password.Text; 
      adapter.InsertCommand.Parameters.Add("@CompanyName", MySqlDbType.VarChar).Value = Convert.ToString(nID); 

,當用戶登錄到該網站如何使用加密的密碼做認證。我想在服務器端進行解密。請幫助

回答

0

首先,你應該salt and hash您的密碼。當你說你想在服務器端做到這一點時,你的意思是在數據庫服務器端還是應用服務器端?

4

基本上,hash + salt你的密碼,將散列保存到數據庫中,不保存明文密碼。

當用戶登錄到系統中,從他身上湊相同的密碼與鹽,比較保存到數據庫中的哈希散列,如果他們匹配,那麼你的用戶進行身份驗證。

Hashing您的密碼會隱藏任何成功嘗試破解密碼的真實密碼。

Salting您與其他任意值密碼把你從基於字典的強力攻擊的餘量。

See OWASP for Salt + Hashing + High number of iterations technique 這是在Java中,但我相信所涵蓋的理論是跨任何語言/實現可移植的。

相關問題