2012-12-07 153 views
1

我想在sql express數據庫中存儲散列密碼。但我無法做到這一點。 這裏是我的代碼:如何在數據庫中存儲散列密碼

SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider(); 

byte[] encode = sha.ComputeHash(Encoding.ASCII.GetBytes(pass)); 

string cmd = "insert into tblLogin (username,password,email,state,active) values ('"+name+"',"+encode+",'"+email+"','"+state +"',"+ active + ")" ; 

而在數據庫中,我不停地密碼爲varbinary。

這裏我的問題是我得到的編碼值爲System.Byte []但沒有哈希值。 我怎麼能做到這一點,我試圖找到,我得到如何哈希密碼,但沒有如何存儲密碼。

這裏我的主要問題是如何構建插入查詢和存儲字節[]到數據庫中?

+0

怎麼樣爲nvarchar – Pranav

+0

看了這個,你需要投的價值... http://stackoverflow.com/questions/9067470/sql-query-to-store-text-data-in-a-varbinarymax – Mate

+2

密碼也應該被醃製。實際上,爲什麼不直接使用'System.Web.Helpers.Crypto.HashPassword(password)'來自動加密密碼並使其密碼強? –

回答

1
var provider = new SHA1CryptoServiceProvider(salt); 
byte[] bytes = Encoding.UTF8.GetBytes(input); 
string result = Convert.ToBase64String(provider.ComputeHash(bytes)); // store it 
3

將其另存爲varchar,而不是varbinary。

+0

nvarchar – Pranav

+0

直到現在我不打擾數據類型,但我很煩擾'編碼'變量,它給了我值System.Byte []而不是散列輸出。 – user1782698

+0

@Pranav - 'nvarchar'是多字節。 SHA1是單字節的。 –

相關問題