ASP.NET MembershipProvider加密/解密

nas*_*ski 5 asp.net asp.net-membership .net-4.0 membership-provider

我对.Net中的MembershipProvider有一些问题,我一直无法找到明确的答案.

  • AES使用什么类型的加密?
  • 加密密码方法,它可以处理任何盐,或者我只是在传递它之前添加它?
  • 方法DecryptPassword - 你能真正解密密码吗?难道这不是一个糟糕的做法吗?

谢谢你的反馈!

Gre*_*reg 4

为成员资格提供者添加元素(ASP.NET 设置架构)

  • enablePasswordRetrieval 属性:“指定成员资格提供程序实例是否支持密码检索。如果为 true,则成员资格提供程序实例支持密码检索。对于 SQL 和 Active Directory 提供程序,默认值为 false。”
  • passwordFormat 属性:“MembershipPasswordFormat 值之一,指示在成员资格数据存储中存储密码的格式。默认值为 Hashed。”
    • Hashed:“密码使用 SHA1 哈希算法进行单向加密。您可以使用 hashAlgorithmType 属性指定与 SHA1 算法不同的哈希算法。”
    • 加密:“加密密码使用由 machineKey 元素(ASP.NET 设置架构)元素配置确定的加密设置进行加密。”

因此,默认情况下,SqlMembershipProvider 使用经过 SHA1 哈希处理的哈希(单向)密码。散列密码不使用 EncryptPassword/DecryptPasswords 方法,但是不行,您不能手动将盐传递给密码的加密/编码(它会为您加盐)。