2017-06-01 55 views
0

我已經將我的密碼在我的ASP.NET Webforms中進行了哈希處理。將字符串值插入數據庫C#

然後,我該如何通過字符串將哈希密碼輸入到數據庫中?

SqlConnection dbCon = new SqlConnection(ConfigurationManager.ConnectionStrings["ConMotorstore"].ConnectionString); 

dbCon.Open(); 

SqlCommand cmd = new SqlCommand("INSERT INTO [user] VALUES (@firstName, @surname, @email, @username, @passwordHash)", dbCon); 

cmd.Parameters.AddWithValue("firstName", firstNameTxt.Text); 
cmd.Parameters.AddWithValue("surname", surnameTxt.Text); 
cmd.Parameters.AddWithValue("email", emailTxt.Text); 
cmd.Parameters.AddWithValue("username", usernameTxt.Text); 

string passwordHash = BCrypt.Net.BCrypt.HashPassword(passwordTxt.Text); 
cmd.Parameters.ToString("passwordHash"); 

cmd.ExecuteNonQuery(); 

我知道我不能用.AddWithValue.ToString思想可能已被使用的。

我是C#的新手。

謝謝。

+2

「我知道我不能使用.AddWithValue」你爲什麼這麼想? – Amy

+5

作爲一個方面說明,你應該在'using'塊中包裝'SqlConnection'和'SqlCommand'語句。 – Icemanind

+0

如果你只是把你的密碼散列到一個字符串並且想存儲該字符串,那麼你的確可以使用'AddWithValue'。你在那裏做的事'cmd.Parameters.ToString(「passwordHash」)'不會有太大的成就,因爲'ToString()'方法只返回一個(格式化的)字符串,並且不會在內部做任何賦值,除此之外將嘗試將「passwordHash」作爲格式字符串,這沒有多大意義。 – Adwaenyth

回答

3

這是行不通的嗎?

SqlConnection dbCon = new SqlConnection(ConfigurationManager.ConnectionStrings["ConMotorstore"].ConnectionString); 
{ 
    dbCon.Open(); 
    SqlCommand cmd = new SqlCommand("INSERT INTO [user] VALUES (@firstName,@surname,@email,@username,@passwordHash)", dbCon); 
    cmd.Parameters.AddWithValue("firstName", firstNameTxt.Text); 
    cmd.Parameters.AddWithValue("surname", surnameTxt.Text); 
    cmd.Parameters.AddWithValue("email", emailTxt.Text); 
    cmd.Parameters.AddWithValue("username", usernameTxt.Text); 
    string passwordHash = BCrypt.Net.BCrypt.HashPassword(passwordTxt.Text); 
    cmd.Parameters.AddWithValue("passwordHash", passwordHash); 


    cmd.ExecuteNonQuery(); 
+0

謝謝@mjwills!工作正常,從來沒有想過嘗試。 – JackH

相關問題