【问题标题】:How to access the SimpleMembershipProvider Hashing Algorithm如何访问 SimpleMembershipProvider 散列算法
【发布时间】:2013-08-26 15:42:39
【问题描述】:

有没有办法使用与 SimpleMembership 密码相同的哈希算法来哈希明文密码,而无需实际设置或更改密码?我只想要密码的哈希版本进行比较。

我正在使用 MVC 4 构建一个新站点,并选择使用 SimpleMembershipProvider 来处理大多数与帐户相关的数据。我的一项要求是保留密码历史记录。我不需要能够检索实际密码,所以单向哈希就可以了。

我想出了一个解决方案,它使用单独的单向散列算法保留单独的密码表,但对我来说似乎相当笨拙。如果我可以获取新密码,使用 SimpleMembership 的算法对其进行哈希处理,将其与我存储的密码进行比较,然后仅在它有效时才更改它,那会更干净。当我从旧站点迁移我们的密码时,这也会有所帮助。

现在我能找到生成密码哈希版本的唯一方法是更改​​密码,然后从 SQL 读取哈希版本。

【问题讨论】:

    标签: algorithm hash passwords simplemembership


    【解决方案1】:

    SimpleMembershipProvider.SetPasswordprivate 方法)使用System.Web.Helpers.Crypto.HashPassword,因此您可以使用它来散列密码。它还为你处理了盐,它包含在返回值中。

    该方法又只返回一个 RFC 2898 哈希,因此您也可以使用 System.Security.Cryptography.Rfc2898DeriveBytes,这是 HashPassword 方法使用的。security.cryptography.rfc2898derivebytes.aspx,但是您需要担心盐渍.

    使用HashPassword 方法应该可以完美地满足您的安全要求;当我被要求强制执行要求时,我会使用它,例如新密码不匹配最后 5 个中的任何一个(无论这是否是一个好的安全要求,它都有效)。您将需要 Crypto.VerifyHashedPassword 方法来查看输入的密码是否与任何历史密码匹配,因为这也会为您处理盐分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-27
      • 2023-01-28
      • 2012-03-24
      • 1970-01-01
      • 2017-11-14
      • 2012-09-03
      • 2014-06-04
      • 2012-02-25
      相关资源
      最近更新 更多