如何加密密码并将其保存在MySQL数据库中。

问题描述:

现在我刚保存的密码,因为它是如何加密密码并将其保存在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); 

,当用户登录到该网站如何使用加密的密码做认证。我想在服务器端进行解密。请帮助

首先,你应该salt and hash您的密码。当你说你想在服务器端做到这一点时,你的意思是在数据库服务器端还是应用服务器端?

基本上,hash + salt你的密码,将散列保存到数据库中,不保存明文密码。

当用户登录到系统中,从他身上凑相同的密码与盐,比较保存到数据库中的哈希散列,如果他们匹配,那么你的用户进行身份验证。

Hashing您的密码会隐藏任何成功尝试破解密码的真实密码。

Salting您与其他任意值密码把你从基于字典的强力攻击的余量。

See OWASP for Salt + Hashing + High number of iterations technique 这是在Java中,但我相信所涵盖的理论是跨任何语言/实现可移植的。