我正在爲我的應用程序編寫身份驗證服務。客戶端將通過HTTP連接到這個認證服務來註冊或連接。他們連接後,他們會收到一個會話密鑰,他們可以使用加密TCP/UDP數據包發送到輔助服務器。這仍然是WIP,只是爲了給你一個全面的概述。Windows商店應用程序中的密碼哈希處理
Serverside,我使用BCrypt來散列傳入的密碼。並將其存儲在數據庫中。 Serverside,我還使用BCrypts驗證方法來檢查存儲的散列的任何傳入密碼。所以這基本上有效。
但是,我自然不想在電線上傳輸一個未經處理的密碼。沒有BCrypt的Windows Store應用程序,但我發現了一些MSDN示例代碼演示瞭如何使用新的加密API的Windows Store應用程序哈希字符串,像這樣:
public static string Hash(string password)
{
HashAlgorithmProvider provider =
HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha512);
CryptographicHash hash = provider.CreateHash();
IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(password, BinaryStringEncoding.Utf16BE);
hash.Append(buffer);
IBuffer hashedBuffer = hash.GetValueAndReset();
return CryptographicBuffer.EncodeToBase64String(hashedBuffer);
}
我打算有連接各種客戶端到服務,不僅僅是Windows商店應用程序(也是傳統的Windows桌面應用程序)。所以自然我想要「一種」哈希密碼客戶端的方式。
我需要關於額外安全機制的建議,如果使用SHA512對密碼客戶端進行哈希處理(如上面的代碼所示),在將其傳輸到服務器時「足夠」(在存儲之前再次哈希和鹽化) 。
我認爲沒有SSL無法保護您的安全......您無法保護它免受中間人攻擊。 – Reno
爲什麼不使用非對稱密鑰? http://msdn.microsoft.com/en-us/library/5e9ft273(v=vs.71).aspx – Paparazzi
@Blam能否詳細說明一下?你的意思是我應該創建一個不對稱的「會話」鍵? – UrbanEsc