簡體   English   中英

如何加密任何用戶在使用應用程序時可以解密的存儲密碼?

[英]How can i encrypt a stored password that any user could decrypt on use of an application?

我有工作代碼,將加密和解密提供給方法的字符串,這一切都適用於我存儲用戶輸入密碼以方便以后。

但是,我要做的是在應用程序配置文件中提供一個密碼(加密),允許用戶從同一域上的SQL服務器提取數據。

因為我已經將ProtectedData.ProtectDataProtectionScope.CurrentUser一起使用,所以使用我作為關鍵加密,意味着用戶無法解密此密鑰,而DataProtectionScope.LocalMachine也不適用。

private static byte[] Entropy = { // Some arbitrary numbers };

public static string Encrypt(string _toEncrypt)
{
    byte[] originalText = Encoding.Unicode.GetBytes(_toEncrypt);
    byte[] EncryptedText = ProtectedData.Protect(originalText, Entropy, DataProtectionScope.CurrentUser);
    return Convert.ToBase64String(EncryptedText);
}

public static string Decrypt(string _toDecrypt)
{
    byte[] EncryptedText = Convert.FromBase64String(_toDecrypt);
    byte[] OriginalText = ProtectedData.Unprotect(EncryptedText, Entropy, DataProtectionScope.CurrentUser);
    return Encoding.Unicode.GetString(OriginalText);
}

是否有另一種方法可以在需要時解密密碼,並出於安全原因以加密格式提供密碼?

由於您正在為配置文件使用app.config ,因此您實際上可以使用aspnet_regiis實用程序來加密文件的各個部分。

我已經有一段時間了,但是如果你做一些搜索( 例如 ),互聯網上有一些資源。 但是,如果我沒記錯,步驟基本上是:

  1. 暫時將app.config重命名為web.config因為aspnet_regiis僅適用於web.config
  2. 打開開發人員命令提示符(可能需要以管理員身份執行)。
  3. 運行aspnet_regiis -pef <the section you're encrypting> <path to your web.config> 該路徑應該只是可以找到配置文件的文件夾,不包括web.config
  4. 將配置文件重命名為app.config

這將需要在托管您的應用程序的服務器或計算機上運行。 如果您的應用程序沒有從單個服務器運行,則事情變得更加復雜,因為您必須導出密鑰,並將其導入到運行該應用程序的每台計算機。 本文包含以下步驟:

  1. 創建機器級RSA密鑰容器(1個步驟)
  2. 導出自定義RSA加密密鑰(1個步驟)
  3. 導入證書(每個機器1個步驟)
  4. 向證書添加權限(每個機器1個步驟)
  5. 加密配置部分
  6. 解密配置部分

您實際上不需要在應用程序中進行任何類型的特殊解密。 配置系統將自動為您處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM