1

开门见山:

我在哪里可以将密码哈希加密算法放在 Membership Provider 中?或者:微软团队将加密方法放在哪里?

因为:我选择让它散列,但最终在我的数据库中的密码是普通的。

非常感谢 :)

- - - 更新

抱歉没有提及,我使用我自己的自定义提供程序。

4

3 回答 3

2

这是在您的 webconfig 的Membership Provider 配置中指定的,使用add 元素

<!-- SqlMembershipProvider syntax -->
<add name="string" 
  type="string" 
  connectionStringName="string"
  applicationName="MyApplication"
  commandTimeout
  description
  enablePasswordRetrieval="false"
  enablePasswordReset="true"
  passwordFormat="Hashed"
  minRequiredPasswordLength
  minRequiredNonalphanumericCharacters
  passwordStrengthRegularExpression
/>

默认算法是 SHA1,在成员资格提供程序中定义,但如果您想使用该hashAlgorithmType属性,您可以覆盖它:

<membership
  defaultProvider="provider name"
  userIsOnlineTimeWindow="number of minutes"
  hashAlgorithmType="SHA1">
  <providers>...</providers>
</membership>

有关提供您自己的算法的更多详细信息,请参阅“将算法名称映射到密码学类”

请注意,该格式会覆盖密码检索之类的内容 - 无法检索散列密码,如果在散列密码时对其调用 GetPassword,则提供程序应返回异常(请参阅EnablePasswordRetrieval属性)。

如果您已经编写了自己的 MembershipProvider,我建议您看一下“如何:示例成员资格提供程序实现”,尤其是方法EncodePasswordUnencodePassword.

于 2010-01-11T10:08:17.067 回答
1

不确定,但我认为密码以纯文本形式保存,因为启用了“密码检索”。您可以通过在 Web.config 中设置 <membership ... enablePasswordRetrieval="False"/> 来禁用此功能。

于 2010-01-11T09:42:54.730 回答
1

它是 XML 配置中提供程序的一个选项。文档显示您刚刚设置了“passwordFormat='hashed'”。

于 2010-01-11T09:44:08.727 回答