我正在使用Visual C#內置的功能設置來保存我的程序的一些選項。 我也想存儲一個密碼,但它會公開...是否可以在使用此設置方法保存密碼之前加密密碼,然後將其解密?使用C#設置功能保存密碼時的最佳做法是什麼?
回答
對於簡單的加密需求,我通過ProtectedData類使用了DPAPI。爲了使得到的加密值可以存儲在文本文件或註冊表中,我編碼生成的字節數組。
這裏是我寫來包裝這件事類:
namespace SomeNamespace
{
using System;
using System.Security.Cryptography;
using System.Text;
/// <summary>
/// used for encryption and decryption
/// </summary>
public static class DataProtector
{
private const string EntropyValue = "secret";
/// <summary>
/// Encrypts a string using the DPAPI.
/// </summary>
/// <param name="stringToEncrypt">The string to encrypt.</param>
/// <returns>The encrypted data.</returns>
public static string EncryptData(string stringToEncrypt)
{
byte[] encryptedData = ProtectedData.Protect(Encoding.Unicode.GetBytes(stringToEncrypt), Encoding.Unicode.GetBytes(EntropyValue), DataProtectionScope.LocalMachine);
return Convert.ToBase64String(encryptedData);
}
/// <summary>
/// Decrypts a string using the DPAPI.
/// </summary>
/// <param name="stringToDecrypt">The string to decrypt.</param>
/// <returns>The decrypted data.</returns>
public static string DecryptData(string stringToDecrypt)
{
byte[] decryptedData = ProtectedData.Unprotect(Convert.FromBase64String(stringToDecrypt), Encoding.Unicode.GetBytes(EntropyValue), DataProtectionScope.LocalMachine);
return Encoding.Unicode.GetString(decryptedData);
}
}
}
是的,感謝您的代碼,我設法做到了我自己...我愛你! – 2010-10-15 04:49:43
如果你加密密碼,你仍然需要在程序的某個地方存儲一個解密密鑰,所以它仍然是安全的。
但是,它會保持誠實的人誠實。
我見過的最常見的做法是挑戰/迴應系統,用戶輸入一個註冊名稱,程序提供一個質詢字符串,然後通過電子郵件發送相應的響應字符串(加密),其中用戶剪切並粘貼到程序中的註冊對話框中。該程序解密響應,將其與挑戰進行比較,然後離開。
當然,由於你仍然必須在程序本身提供解密密碼,它仍然可以被一個確定的黑客擊敗。
一個簡單的方法就是用自己加密密碼。你將永遠無法解密它,但你將能夠比較用戶輸入的密碼。
+1我喜歡這個主意。 – 2010-10-14 20:16:45
你能給我一個提示,我怎樣才能「用自己的密碼加密」......你是什麼意思?謝謝。 – 2010-10-14 20:57:43
我懷疑OP想存儲密碼,以便用戶不需要再次輸入密碼......如果是這種情況,這種解決方案不是很有幫助;) – 2010-10-14 23:04:24
- 1. 保存設置的最佳做法?
- 2. ,保存密碼的最佳方法是什麼?
- 3. 保存加密/解密密鑰的最佳方法是什麼?
- 4. 在IIS中設置maxAllowedContentLength時的最佳做法是什麼?
- 5. 在PHP中執行「重置密碼」功能的最佳方法是什麼?
- 6. 保護git倉庫祕密的最佳做法是什麼?
- 7. 什麼是測試node.js應用程序時存根功能的最佳設置?
- 8. 支付網頁密碼輸入的最佳做法是什麼?
- 9. 什麼是忘記密碼過程的最佳做法?
- 10. 密碼發佈的最佳做法是什麼?
- 11. mvc2確認密碼字段的最佳做法是什麼?
- 12. ASP.NET緩存,什麼是最佳做法
- 13. 在iPhone上存儲用戶名和密碼的最佳做法是什麼?
- 14. 實現忘記密碼功能的最佳方式是什麼?
- 15. 最佳做法是什麼?
- 16. DART:配置設置的最佳做法是什麼
- 17. 存儲用戶配置的最佳做法是什麼?
- 18. HMAC解決方案中密鑰的使用(最佳/最佳做法)是什麼?
- 19. 保存單獨文本的最佳做法是什麼?
- 20. 在批處理中使用密碼短語的最佳做法是什麼?
- 21. 處理密碼和配置文件的最佳做法是什麼?
- 22. 設置<table>大小的最佳做法是什麼?
- 23. 爲敏捷開發設置TFS的最佳做法是什麼?
- 24. 存儲設置的最佳做法
- 25. 什麼是使用功能方式處理日誌消息的最佳做法
- 26. 設計SOA WCF Web服務時的最佳做法是什麼?
- 27. 在c#上保存Excell文件數據的最佳做法是什麼?
- 28. 緩存的最佳做法是什麼?有什麼限制?
- 29. 保存iphone應用程序設置的最佳方法是什麼?
- 30. 停用SharePoint功能的最佳做法
https://crackstation.net/hashing-security.htm – Soren 2015-01-18 10:50:56