我们是否在 C# 中使用重新哈希密码
Are we using Re hashing Password in C#
我正在使用 Hashing 和 Salt 来解密密码。这就是我正在使用的方法:
public string CreateSalt(int size)
{
var rng = new RNGCryptoServiceProvider();
var buff = new byte[size];
rng.GetBytes(buff);
return Convert.ToBase64String(buff);
}
public string GenerateHash(string input, string salt)
{
byte[] bytes = Encoding.UTF8.GetBytes(input + salt);
SHA512Managed sha256 = new SHA512Managed();
byte[] hash= sha256.ComputeHash(bytes);
return ByteArrayToHexString(hash);
}
我对密码进行哈希处理并将其保存到数据库后,如何重新进行哈希处理?或者即使我需要重新散列?
用户将创建密码以登录该网站。我还没有决定忘记密码将如何工作,所以也许它会重置密码并发送给他们。关于散列的任何想法,想法?
您必须将散列密码和密码盐都存储在数据库中。当用户登录时,你得到输入的密码,将其与存储在数据库中的盐进行散列,然后将结果与存储的散列密码进行比较。
关于忘记密码,您是对的。只需创建一个随机密码并将其发送给用户。
我正在使用 Hashing 和 Salt 来解密密码。这就是我正在使用的方法:
public string CreateSalt(int size)
{
var rng = new RNGCryptoServiceProvider();
var buff = new byte[size];
rng.GetBytes(buff);
return Convert.ToBase64String(buff);
}
public string GenerateHash(string input, string salt)
{
byte[] bytes = Encoding.UTF8.GetBytes(input + salt);
SHA512Managed sha256 = new SHA512Managed();
byte[] hash= sha256.ComputeHash(bytes);
return ByteArrayToHexString(hash);
}
我对密码进行哈希处理并将其保存到数据库后,如何重新进行哈希处理?或者即使我需要重新散列? 用户将创建密码以登录该网站。我还没有决定忘记密码将如何工作,所以也许它会重置密码并发送给他们。关于散列的任何想法,想法?
您必须将散列密码和密码盐都存储在数据库中。当用户登录时,你得到输入的密码,将其与存储在数据库中的盐进行散列,然后将结果与存储的散列密码进行比较。
关于忘记密码,您是对的。只需创建一个随机密码并将其发送给用户。