Asp.net MembershipPasswordFormat。哈希?这是怎么回事?

Asp.net MembershipPasswordFormat。哈希?这是怎么回事?,asp.net,asp.net-mvc,membership-provider,Asp.net,Asp.net Mvc,Membership Provider,直截了当地说: 在成员资格提供程序中,我可以将密码哈希加密算法放在哪里? 或者:微软团队将加密方法放在哪里 因为:我选择让它散列,但密码在我的数据库中结束是普通的 非常感谢:) -----更新 抱歉没有提及,我使用我自己的自定义提供商 不确定,但我认为密码是以纯文本保存的,因为启用了“密码检索”。 您可以通过在Web.config中设置来禁用此功能。不确定,但我认为密码是以纯文本形式保存的,因为启用了“密码检索”。 您可以通过在Web.config中设置来禁用此功能。这是XML配置中提供程序上的

直截了当地说:

在成员资格提供程序中,我可以将密码哈希加密算法放在哪里? 或者:微软团队将加密方法放在哪里

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

非常感谢:)

-----更新


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

不确定,但我认为密码是以纯文本保存的,因为启用了“密码检索”。
您可以通过在Web.config中设置来禁用此功能。

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

这是XML配置中提供程序上的一个选项。显示您刚刚设置了“passwordFormat='hash'”。

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

这在您的网络配置的中指定,使用:

有关提供自己的算法的更多详细信息,请参阅

请注意,该格式会覆盖密码检索之类的内容—哈希密码无法检索,如果在对密码进行哈希处理时对其调用GetPassword,则提供程序应返回异常(请参见属性)

如果您已经编写了自己的MembershipProvider,我建议您查看,特别是方法
EncodePassword
UnencodePassword

这是在您的webconfig中指定的,使用:

有关提供自己的算法的更多详细信息,请参阅

请注意,该格式会覆盖密码检索之类的内容—哈希密码无法检索,如果在对密码进行哈希处理时对其调用GetPassword,则提供程序应返回异常(请参见属性)


如果您已经编写了自己的MembershipProvider,我建议您查看,尤其是方法
EncodePassword
UnencodePassword

MembershipPasswordFormat.Hashed->我在配置中直接使用,但它不起作用?您实际使用的提供商是什么?SqlMembershipProvider?检查它的源代码,看看它是如何使用该字段的。实际上,我使用我自己的提供者,我忘了提到过,你能给我发送CreateUser方法的源代码吗?我想可能是我的代码有问题,可能会将密码直接提交到数据库,但是在将密码提交到数据库之前,我在哪里可以找到散列密码的方法呢?这可能是本案的问题。是的,这绝对是问题所在。在这种情况下,您只需要在设置密码之前了解如何散列密码。使用SHA-256或更高版本对其进行散列:,有大量的示例可供使用(将获得的字节转换为十六进制(base16)和store.MembershipPasswordFormat.Hashed->我在配置中直接使用它,但它不起作用?您实际使用的是什么提供程序?SqlMembershipProvider?检查它的源代码,看看它是如何使用该字段的。实际上,我使用我自己的提供程序,我忘了提到ve,您能给我发送CreateUser met的源代码吗hod?我想我的代码可能会有问题,可能会直接将密码提交到数据库,但在我将密码提交到数据库之前,我在哪里可以找到散列密码的方法?这可能是本例的问题。是的,这肯定是问题所在。在这种情况下,您只想在设置之前了解如何散列密码使用SHA-256或更高版本对其进行散列:,有很多示例可以使用(获取您获得的字节,并将其转换为十六进制(base16)和存储。即使我尝试将此选项设置为false,哈希也无法进入数据库…我不知道问题出在哪里。即使我尝试将此选项设置为false,哈希也无法进入数据库…我不知道问题出在哪里。是的,我已经解决了在CreateUser和Validate生成哈希代码的问题eUser,ChangePassword。这3个方法使用密码,所以有必要对它们进行散列。是的-每个方法都需要调用EncodePassword方法。是的,我已经计算出在CreateUser和ValidateUser,ChangePassword生成散列码。这3个方法使用密码,所以有必要对它们进行散列。是的-每个方法将需要调用EncodePassword方法。
<!-- SqlMembershipProvider syntax -->
<add name="string" 
  type="string" 
  connectionStringName="string"
  applicationName="MyApplication"
  commandTimeout
  description
  enablePasswordRetrieval="false"
  enablePasswordReset="true"
  passwordFormat="Hashed"
  minRequiredPasswordLength
  minRequiredNonalphanumericCharacters
  passwordStrengthRegularExpression
/>
<membership
  defaultProvider="provider name"
  userIsOnlineTimeWindow="number of minutes"
  hashAlgorithmType="SHA1">
  <providers>...</providers>
</membership>