gpt4 book ai didi

algorithm - 如何访问 SimpleMembershipProvider 哈希算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:34:20 24 4
gpt4 key购买 nike

有没有一种方法可以使用 SimpleMembership 用于密码的相同散列算法来散列明文密码,而无需实际设置或更改密码?我只想要密码的散列版本进行比较。

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

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

目前我能找到的生成密码散列版本的唯一方法是更改​​密码,然后从 SQL 读取散列版本。

最佳答案

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

该方法反过来只返回一个 RFC 2898 散列,因此您也可以使用 System.Security.Cryptography.Rfc2898DeriveBytes ,这是 HashPassword 方法使用的内容。security.cryptography.rfc2898derivebytes.aspx,但是您需要担心加盐。

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

关于algorithm - 如何访问 SimpleMembershipProvider 哈希算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18405363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com