如何在C#应用程序中安全地存储数据库登录名和密码?

如何在C#应用程序中安全地存储数据库登录名和密码?,c#,sql-server,passwords,C#,Sql Server,Passwords,我有一个C#应用程序,需要连接到SQL数据库,以便不时发送一些数据。如何安全地存储用于此作业的用户名和密码?不确定您的确切要求,但首先,您必须加密密码。 此外,当传输这些敏感信息时,请考虑使用安全连接。在连接字符串中存储加密版本,并在解密密码后以编程方式形成连接字符串。 您可以使用您选择的任何加密机制—从简单到复杂。关于如何保护.Net中的连接字符串 您可能希望使用。尽可能使用集成的Windows身份验证。它减轻了应用程序的负担,让Windows来处理。使用Windows身份验证而不是SQL身份

我有一个C#应用程序,需要连接到SQL数据库,以便不时发送一些数据。如何安全地存储用于此作业的用户名和密码?

不确定您的确切要求,但首先,您必须加密密码。
此外,当传输这些敏感信息时,请考虑使用安全连接。

在连接字符串中存储加密版本,并在解密密码后以编程方式形成连接字符串。

您可以使用您选择的任何加密机制—从简单到复杂。

关于如何保护.Net中的连接字符串


您可能希望使用。

尽可能使用集成的Windows身份验证。它减轻了应用程序的负担,让Windows来处理。使用Windows身份验证而不是SQL身份验证被认为是最佳做法

阅读以下公认答案:

另见:

以及:


顺便说一句,如果这是问题所暗示的“作业”,它可能是简单Windows服务或计划任务的最佳候选,这两种服务或任务都可以在特定的安全上下文中运行(即作为特定的Windows用户)。

在app.config或web.config中,然后使用.net加密提供程序对其进行加密

欲了解更多信息,请点击此处

使用受保护的配置加密配置信息


编码将stirng转换为md5

using System.Text;
using System.Security.Cryptography;
    public static string ConvertStringtoMD5(string strword)
        {
            MD5 md5 = MD5.Create();
            byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(strword);
            byte[] hash = md5.ComputeHash(inputBytes);
            StringBuilder sb = new StringBuilder();
                for (int i = 0; i < hash.Length; i++)
               { 
                    sb.Append(hash[i].ToString("x2"));
               }
               return sb.ToString();
       }
使用System.Text;
使用System.Security.Cryptography;
公共静态字符串转换器StringTomd5(字符串strword)
{
MD5 MD5=MD5.Create();
byte[]inputBytes=System.Text.Encoding.ASCII.GetBytes(strword);
byte[]hash=md5.ComputeHash(inputBytes);
StringBuilder sb=新的StringBuilder();
for(int i=0;i
您可能需要查看RijndaelManaged密钥,它是一种非常安全的对称加密密钥。在这里可以找到一篇关于此信息(和教程)的好文章


您可以对密码使用加密和解密算法,并按创建用户的人和创建日期记录用户信息,并将其保存在数据库中。
即使有人在数据库中更新或编辑该信息。

通过转换MD5算法值来保存PasWWord,如果可能的话,使用集成安全性,否则,如上面提到的,考虑加密密码。@ SATDIDENSIGH &您将如何获得密码?md5是一种单向算法。@SimonHalsey很好,SQL Server需要实际的用户/密码(SQL身份验证模式)@satindersingh您确定理解这个问题吗?我们没有检查密码,SQL Server是,所以我们需要实际的密码。如果你用MD5散列它,你就无法取回它。我认为数据没有那么敏感。他想对db用户名/密码保密。SQL Server将如何使用您的MD5哈希?MD5不仅已损坏,而且是一个哈希;就这个场景而言,一种方法是无效的。MD5的设计师Ron Rivest写道,“MD5和sha1显然都被破坏了(在抗冲突方面)。-请参阅“安全性”部分:我认为已经有人提出了这样的建议,但在实际的实现参考中,指向MSDN文章的链接似乎被弃用。你能更新一下吗?