开门见山:
我可以将密码散列加密算法放在成员提供程序中的什么位置?或者:微软团队将加密方法放在哪里?
因为:我选择了Hash,但密码在我的数据库中是明码的。
非常感谢:)
-更新
很抱歉没有提到,我正在使用我自己的自定义提供者。
发布于 2010-01-11 18:08:17
这是使用add element在the配置的Membership Provider configuration中指定的
<!-- 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>有关提供自己的算法的更多详细信息,请参阅"Mapping Algorithm Names to Cryptography Classes"。
请注意,该格式覆盖了密码检索之类的内容-哈希密码无法检索,如果在哈希密码时调用GetPassword,则提供程序应该返回异常(请参见EnablePasswordRetrieval属性)。
如果您已经编写了自己的MembershipProvider,我建议您查看一下"How to: Sample Membership Provider Implementation",特别是EncodePassword和UnencodePassword方法。
发布于 2010-01-11 17:42:55
不确定,但我认为密码是以纯文本保存的,因为启用了“密码检索”。您可以通过设置。
发布于 2010-01-11 17:44:09
这是XML配置中提供程序的一个选项。docs显示您刚刚设置了"passwordFormat='hashed'“。
https://stackoverflow.com/questions/2040830
复制相似问题