gpt4 book ai didi

c# - 我如何加密任何用户在使用应用程序时都可以解密的存储密码?

转载 作者:行者123 更新时间:2023-11-30 18:11:40 24 4
gpt4 key购买 nike

我有工作代码可以加密和解密提供给方法的字符串,这一切都适用于我存储用户输入的密码以方便以后使用。

但是我想做的是在应用程序配置文件中提供密码(加密),允许用户从同一域中的 SQL 服务器提取数据。

因为我将 ProtectedData.ProtectDataProtectionScope.CurrentUser 一起使用,所以它已使用我作为 key 进行加密,这意味着用户无法解密此 key ,并且 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用于加密文件部分的实用程序。

自从我不得不这样做以来已经有一段时间了,但是如果您进行一些搜索 (for example),互联网上有一些资源。但是,如果我没记错的话,这些步骤基本上是:

  1. 暂时重命名您的 app.configweb.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 .

这需要在托管您的应用程序的服务器或机器上运行。如果您的应用程序不是从单个服务器上运行,事情就会变得更加复杂,因为您必须导出 key ,然后导入它发送到每台运行该应用程序的计算机。 This article包含以下步骤:

  1. Create a machine-level RSA Key Container (1 time step)
  2. Exporting the Custom RSA Encryption Key (1 time step)
  3. Importing the Certificate (1 time step - per machine)
  4. Adding Permissions to the Certificate (1 time step - per machine)
  5. Encrypting the Configuration Section
  6. Decrypting the Configuration Section

您实际上不需要在您的应用程序中进行任何类型的特殊解密。配置系统会自动为你处理。

关于c# - 我如何加密任何用户在使用应用程序时都可以解密的存储密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57164809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com