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

时间:2011-08-18 15:13:07

标签: c# asp.net mysql authentication encryption

现在我只是保存密码

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

当用户登录网站时,如何使用加密密码进行身份验证。我想在服务器端本身进行解密。请帮忙

2 个答案:

答案 0 :(得分:4)

基本上,hash + salt您的密码将哈希保存到数据库中,请不要保存明文密码。

当用户登录到您的系统时,使用salt散列与他相同的密码,将该散列与保存到数据库的散列进行比较,如果匹配,则对您的用户进行身份验证。

Hashing您的密码会隐藏任何成功入侵密码的真实密码。

Salting您的密码与另一个任意值可以为您节省基于字典的暴力攻击的余量。

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

答案 1 :(得分:0)

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