设置随机密码和盐

时间:2017-03-28 23:32:05

标签: c# asp.net-mvc sha256

我想创建随机密码和盐。

现在我有一个基于加密密码的功能,如:

public string EncryptPassword(string password, string salt)
{
        using (var sha256 = SHA256.Create())
        {
             var saltedPassword = string.Format("{0}{1}", salt, password);
             byte[] saltedPasswordAsBytes = Encoding.UTF8.GetBytes(saltedPassword);
             return Convert.ToBase64String(sha256.ComputeHash(saltedPasswordAsBytes));
        }
}

所以我想使用相同的编码密码和盐但是使用随机值,在编码之前我想知道密码是什么。我该怎么办?

我有这样的事情:

 public string EncryptPasswordRandom()
 {
         var password = // some random password, how can I generate it?
         var salt = // how can I generate it?

         using (var sha256 = SHA256.Create())
         {
              var saltedPassword = string.Format("{0}{1}", salt, password);
              byte[] saltedPasswordAsBytes = Encoding.UTF8.GetBytes(saltedPassword);
              return Convert.ToBase64String(sha256.ComputeHash(saltedPasswordAsBytes));
         }
 }

非常感谢帮助。此致

  

注意:我有一个运行良好的Web应用程序,我可以注册用户和   登录时,这个随机密码用于恢复密码并制作一个   随机

1 个答案:

答案 0 :(得分:-1)

System.Web.Membership有一个GeneratePassword方法可以完成这项工作。

至于随机生成盐Guid.New()应该有效。

This answer解决了以高熵方式生成盐的问题。

如果你解释一下你想要完成的事情,这可能会有所帮助。面值看起来似乎是一个奇怪的要求,除非这是某种测试。