SqlMembershipProvider.PasswordFormat 属性

定义

获取一个值,该值指示 SQL Server 成员资格数据库中存储密码的格式。

public:
 virtual property System::Web::Security::MembershipPasswordFormat PasswordFormat { System::Web::Security::MembershipPasswordFormat get(); };
public override System.Web.Security.MembershipPasswordFormat PasswordFormat { get; }
member this.PasswordFormat : System.Web.Security.MembershipPasswordFormat
Public Overrides ReadOnly Property PasswordFormat As MembershipPasswordFormat

属性值

MembershipPasswordFormat

一个 MembershipPasswordFormat 值,它指示 SQL Server 数据库中存储密码的格式。

示例

下面的代码示例演示 ASP.NET 应用程序Web.config文件中 的成员身份 元素 system.web 。 它指定应用程序的 SqlMembershipProvider 实例并将其密码格式设置为 Hashed

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">  
  <providers>  
    <add name="SqlProvider"  
      type="System.Web.Security.SqlMembershipProvider"  
      connectionStringName="SqlServices"  
      enablePasswordRetrieval="false"  
      enablePasswordReset="true"  
      requiresQuestionAndAnswer="true"  
      passwordFormat="Hashed"  
      applicationName="MyApplication" />  
  </providers>  
</membership>  

注解

仅使用 HashedClear Encrypted 不安全。 Hashed 密码使用单向哈希算法和在数据库中存储时随机生成的盐值进行哈希处理。 验证密码时,将使用数据库中用于验证的 salt 值对其进行哈希处理。 无法检索哈希密码。 Encrypted 密码不被视为安全,因为泄露数据库内容也会公开加密密钥。 这意味着可以解密和公开加密的密码。

该值 PasswordFormat 在 ASP.NET 应用程序的Web.config文件的 提供程序 部分中指定。

Encrypted``Hashed密码默认根据配置中的 machineKey 元素中提供的信息进行加密或哈希处理。 请注意,如果为validation特性指定值3DES,或者未指定任何值,则使用SHA1算法对哈希密码进行哈希处理。

可以使用成员资格元素 (ASP.NET 设置架构) 配置元素的属性定义hashAlgorithmType自定义哈希算法。 如果选择加密,则默认密码加密使用 AES。 可以通过设置 decryption machineKey 配置元素的属性来更改加密算法。 如果要加密密码,则必须为 decryptionKey machineKey 元素中的属性提供显式值。 使用具有 ASP.NET 成员身份的加密密码时,不支持此属性的AutoGenerate``decryptionKey默认值。

由于 SHA1 出现冲突问题,Microsoft 建议使用基于 SHA256 或更好的安全模型。

适用于

另请参阅