如何使用c#对密码值进行加密和散列?

ACP*_*ACP 17 c# passwords hash

海家伙,

我开始知道存储密码的哈希值是从数据库中存储密码的首选方法中安全的...

  • 如何使用c#对密码值进行加密和散列?

  • 如何比较存储在DB中的值和用户给出的值?

Dan*_*May 21

最常用的方法是使用散列算法.有一个很棒的博客文章在这里关于如何使用MD5算法来散列字符串,但System.Cryptography命名空间中还有许多其他示例.

至于#2,这将如何工作的一般分步指南如下:

注册时:

  1. 使用指定的算法散列用户密码并将其存储在数据库中
  2. 加盐此哈希(可选,但首选)

登录/用户和密码检查:

  1. 在数据库中查找用户名
  2. 如果存在,请检索哈希密码
  3. 对输入的密码进行哈希和加盐,并将其与检索到的密码进行比较

这一切都相对冗长,但它非常安全.

还有一个对散列极其深入的指导腌制这里.


mag*_*nus 5

简单哈希:

public string GetSHA256Hash(string s)
        {
            if (string.IsNullOrEmpty(s))
            {
                throw new ArgumentException("An empty string value cannot be hashed.");
            }

            Byte[] data = System.Text.Encoding.UTF8.GetBytes(s);
            Byte[] hash = new SHA256CryptoServiceProvider().ComputeHash(data);
            return Convert.ToBase64String(hash);
        }
Run Code Online (Sandbox Code Playgroud)