2011-09-18 108 views
1

我知道我需要將它存儲爲散列,然後將這些值進行比較,但我應該在哪裏發送該散列以便與以後比較?最安全的地方存儲密碼的散列

+1

您的用戶的大腦... –

+0

不要忘記[salt](http://en.wikipedia.org/wiki/Salt_(cryptography))。 – hammar

+1

哈馬爾,請不要傷害他。 –

回答

3

查看ProtectedData班。它使用DPAPI,實際上適合提供中級安全性。與IsolatedStorage結合使用,對於大多數用途來說已經夠用了。

+2

ProtectedData類表示它用於密碼,但它似乎支持解密和加密。這不適用於密碼。密碼應該使用[單向散列函數](http://en.wikipedia.org/wiki/One-way_function)。 –

+1

當然好。這是經驗法則。我建議使用'ProtectedData'保護哈希(或甚至哈希的哈希)。 –

1

它並不真正身在何處,它的存儲。答案是:無論您的應用程序是否有意義。

這可能是其他任何存儲機制。考慮把它現在在哪裏其他用戶相關的信息是:

  • 數據庫
  • 註冊表(你沒有提到這是否是的WinForms或其他)
  • 本地存儲(贏手機)
  • 致電網絡服務

建議將其保存在用戶無法輕易得到的地方。是的,這是一個散列,但當人們開始討論這個價值時會出現問題。儘可能保持視線不見。

0

如果您可以集成現有的AuthN/AuthZ機制,請使用它來代替滾動自己的機制。

OAuth就是這樣一種機制。

如果你必須推出自己的話:

  • 使用數據庫來存儲你的數據
  • 安全是數據庫作爲最好的,你可以(讓誰知道什麼是安全公司/專家或DBA他們正在做的做到這一點)
  • 接受密碼a SecureString
  • Use a Salt
  • 散列的口令內存服務器,並將其與自己先前存儲在數據庫中
  • 使用沒有已知漏洞的單向散列函數的散列,如SHA256
  • 獲得從System.Cryptography
  • 您的哈希函數的實現