【问题标题】:How can I get the salt of the hash algorithm that ASP.NET membership uses?如何获得 ASP.NET 成员使用的哈希算法的盐?
【发布时间】:2015-05-22 11:51:12
【问题描述】:

我发现默认散列是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);
}

我需要盐……所以我猜它是从某个地方获取盐的,比如 web config 之类的文件,或者它计算盐……我不知道

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

【问题讨论】:

  • 可能基于机器密钥 - 您使用的是哪个 asp.net 会员提供商?
  • 我查看了msdn.microsoft.com/en-us/library/… 并且成员资格应该在 DLL System.Web.ApplicationServices.dll 中我使用的是这个 DLL 的 4.0.0.0 版本,因为我使用的是 .NET 4.5 和 ASP.Net MVC 4 @DanielA.White
  • 那家伙很抽象——具体是哪一个?
  • 没有@DanielA.White。 Salt 对于每个密码都是唯一且随机的。

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


【解决方案1】:

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

来自 Membership Providers 文档 (https://msdn.microsoft.com/en-us/library/aa478949.aspx):

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 2012-05-03
    • 1970-01-01
    • 2011-05-27
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多