2011-08-03 103 views
1

我已經在c#中創建了一個Web窗體,它接受用戶名和密碼並以'圖像'格式將密碼存儲在MSSQL 2005 db中。密碼與salt合併,以UTF8編碼,最後使用SHA512加密。當我從數據庫中將它們拉回來時,我希望能夠以字符串格式查看密碼。我的解密函數應該如何,如果以下是我如何加密密碼?那可能嗎? :UTF8編碼的密碼字節[]與SHA512加密到字符串轉換

string loginID = "";//This will be stored in varchar format in MSSQL..(Unrelated to the question) 
    string password =""; //This is where I store password inputted by user. 
    Random r = new Random(); 
    int salt = r.Next((int)Math.Pow(2, 16)); 
    int verifyCode = r.Next((int)Math.Pow(2, 16)); 
    string tmpPwd = password.ToLower() + salt.ToString(); 
    UTF8Encoding textConverter = new UTF8Encoding(); 
    byte[] passBytes = textConverter.GetBytes(tmpPwd); 
    byte[] hashedPWD = new SHA512Managed().ComputeHash(passBytes); 

hashedPWD中的值存儲在MSSQL中作爲圖像數據類型,salt存儲爲int。

回答

2

你不能 - 根據定義,這是一個散列函數 - 單向函數。直到最後一行,您可以取回密碼,但在散列函數之後,您只需生成第二個散列並比較兩個散列,看看它們是否產生了相同的結果,在這種情況下,您可以假定源字符串是相同的。

+0

是否可以檢索鹽和散列密碼並將其作爲Web服務發送給某些MD5解密站點/服務? – pl56

相關問題