【问题标题】:Encrypt & Decrypt passwords using C#使用 C# 加密和解密密码
【发布时间】:2010-12-16 18:34:22
【问题描述】:

我想创建一个可以使用 C# 加密和解密我的密码的应用程序。

我的想法很简单。我将使用Substring 从输入的字符串中提取每个字母,我将操纵 ASCI 代码并将其转换为另一个字母。我将使用相同的方法对其进行加密。

别人解密我生成的密码有多难?

我正在寻找建议或示例代码。

【问题讨论】:

  • 另外,提示:不要存储加密密码,存储他们的哈希。

标签: c# visual-studio passwords encryption


【解决方案1】:

在 .NET 中有很多安全的加密方式。我认为与其尝试自己实现解决方案,不如看看System.Security.Cryptography。

【讨论】:

    【解决方案2】:

    Caesar cyphers 是出了名的不安全。放弃这种方法是徒劳的。对密码保护进行更多研究。

    【讨论】:

    • 怎么样,如果对它们进行双重加密,那么我将使用 Ceasar 密码对它们进行 2 次或更多次加密!
    • @dotNET:嗯,不。任何一对凯撒密码都相当于一个不同的凯撒密码。不要试图发明自己的密码学。
    • @dotNet:凯撒密码不安全到无用的地步。有眼力的人可以不用铅笔就能破解它们。计算机加载程序来破解它比实际破解它需要更长的时间。当我说您应该对密码保护和加密进行更多研究时,我非常认真。理想情况下,您永远不会对密码应用对称加密。散列或非对称加密是更可行的选择。
    • 更不用说在 .NET 中任何攻击者都可以简单地读取您的代码并弄清楚您要做什么!加密必须始终基于攻击者没有的秘密。你永远不可能有任何基于攻击者不知道你的算法的安全方法。
    【解决方案3】:

    有些库可以为您加密数据。他们的加密算法比你能想到的任何东西都要好。使用它们。

    【讨论】:

      【解决方案4】:

      很少有理由存储密码的加密版本。这会造成安全漏洞。相反,通常最好存储密码的单向哈希(例如使用 SHA1)和随机盐。然后,您总是将输入密码的哈希值与存储在数据库中的哈希值进行比较,而不是实际比较密码。

      这种方法的好处是没有人可以确定用户的密码是什么,即使他或她可以访问数据库。加盐使相同的密码看起来彼此不同。

      以下是使用 System.Security.Cryptography 命名空间创建随机盐的示例。

      byte[] salt = new byte[10];
      RandomNumberGenerator.Create().GetBytes(salt);
      

      您可以将盐与密码结合起来,生成一个单向哈希,如下所示:

      byte[]  passwordBytes = new byte[Encoding.UTF8.GetByteCount(password) + salt.Length];  // Create buffer for password bytes and hash
      int passwordLength = Encoding.UTF8.GetBytes(password, 0, password.Length, passwordBytes, 0);
      salt.CopyTo(passwordBytes, passwordLength);
      byte[] hash = null;
      using (SHA512Managed hasher = new SHA512Managed()) {
        hash = hasher.ComputeHash(passwordBytes);
      }
      

      存储散列密码和盐。对用户进行身份验证时,使用与创建存储散列时使用的相同的盐来散列用户输入的密码。将此新哈希与数据库中的哈希进行比较。

      【讨论】:

      • 我刚刚重新阅读了你的问题,我可能错过了你的意思。如果您正在尝试创建一种方法来以加密方式存储您自己的各种来源的密码,那么这种方法显然不是您所追求的。但是,我会将这个答案留给对身份验证方法感兴趣的任何人。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      相关资源
      最近更新 更多