如何获取ASP.NET成员资格使用的哈希算法的盐?

时间:2015-05-22 11:51:13

标签: c# asp.net authentication hash asp.net-membership

我发现默认散列是SHA1,但是它们也是盐,你可以看一下:

public string EncodePassword(string pass, string salt)
{
    byte[] bytes = Encoding.Unicode.GetBytes(pass);
    byte[] src = Encoding.Unicode.GetBytes(salt);
    byte[] dst = new byte[src.Length + bytes.Length];
    Buffer.BlockCopy(src, 0, dst, 0, src.Length);
    Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length);
    HashAlgorithm algorithm = HashAlgorithm.Create("SHA1");
    byte[] inArray = algorithm.ComputeHash(dst);
    return Convert.ToBase64String(inArray);
}

我需要盐..所以我猜它从某个地方获取盐,一些文件像网络配置或它计算盐..我不知道

如何获得salt使用的哈希算法的ASP.NET membership

1 个答案:

答案 0 :(得分:2)

您可以从aspnet_Membership表中读取每个密码的相应salt值。

来自会员提供商文档(https://msdn.microsoft.com/en-us/library/aa478949.aspx):

  

salt是由.NET Framework的RNGCryptoServiceProvider类生成的随机128位值。每个密码/密码答案对都使用此唯一值进行加盐,并且salt存储在aspnet_Membership表的PasswordSalt字段中。哈希密码和盐的结果存储在密码字段中。