2012-01-18 123 views
0

可能重複:
Encrypting passwords in WinForms app.config, .NET在properties.settings文件中安全地存儲密碼的最佳方式是什麼?

我想成爲一個登錄框能儲存用戶名/密碼對。每次加載應用程序時,都會從Properties.Settings文件中加載保存的憑據,然後使用這些值填充登錄框。

我知道密碼總是有可能被黑客入侵,但是任何事情都必須比將明文存儲在properties.settings文件中更好。

我一直在尋找使用SecureString,但所有似乎是做的是防止密碼存儲在明文在內存中。

任何想法最好的辦法來處理這個?

+0

爲什麼你就不能使用內置的Windows提供的密碼存儲機制? – 2012-01-18 17:05:22

+0

你是否控制你正在登錄的應用程序? – 2012-01-18 17:05:52

+1

基本上重複http://stackoverflow.com/questions/1392876/encrypting-passwords-in-winforms-app-config-net – Lloyd 2012-01-18 17:06:01

回答

0

您只能存儲密碼散列,而不是保存純文本。然後,當您比較存儲在用戶數據庫中的密碼和輸入的密碼時,您將比較散列而不是打開的文本。在System.Security.Cryptography中查找...

0

如果您希望用密碼預填充登錄框,那麼它必須以明文的某處存儲,無論作爲源中的文字字符串,數據庫,配置或設置文件,或編譯資源中的字符串。

另請注意,從被屏蔽的密碼字段中提取密碼可以像發送消息到文本框一樣簡單。

您可能會考慮加密密碼或生成MD5散列並存儲,即。用戶登錄時,請使用與原始密碼相同的過程,並比較結果以查看是否輸入了正確的密碼,但這不會讓您預填充登錄框。

另一方面,如果要填充對話框,需要輸入密碼有什麼意義?你也可以只顯示一個表示「按回車登錄」的表格,根本沒有字段。

+0

因爲他們可以點擊/取消點擊「記住我」複選框,所以下次應用程序啓動時應該記住他們的密碼。如果驗證成功,將使用存儲在其設置文件中的密碼,並且登錄不會顯示。我仍然需要在某處存儲密碼。我只是覺得讓它更安全一點很好。 – jaffa 2012-01-19 10:55:16

1

我不明白爲什麼提到哈希值;如果它們被設計成不可逆轉的,那麼它們如何被用來預先填充這些字段呢?

當我前一陣子做了類似這樣的東西,我做了以下內容:

AES_encrypt (username + saltString1 + password + saltString2) 

店,其結果並存儲AES密鑰。

要填充字段:

  • 召回所述數據和所述密鑰
  • 解密數據,使用密鑰
  • 分割字符串約saltString1
  • 分割的第一個值是用戶名
  • 第二個值是password + saltString2
    • substrin G採用saltString2,你有你的密碼
+0

是的,這與散列無關,它防止密碼以明文形式存儲在app.config文件中。 – jaffa 2012-01-19 10:56:28

+1

所以現在密碼是加密的,AES密鑰不是。我想我們也可以對它進行加密並說「這是一直下降的烏龜」,但它必須在某個地方結束,這意味着任何擁有該代碼的人都可以像密碼一樣輕鬆獲取密碼。 – harold 2012-01-19 16:15:17

相關問題