【问题标题】:What encryption algorithm does the .net membership provider use?.net 会员提供者使用什么加密算法?
【发布时间】:2008-11-11 14:47:07
【问题描述】:

我正在查看 .net 成员资格提供程序的源代码,在 sqlmembershipprovider.cs 中有对 EncryptPassword 和 DecryptPassword 的调用,但我在源代码中的任何地方都看不到该方法。

他们使用什么算法?那个源不是也放出来了吗?

【问题讨论】:

  • 不要依赖 MS 的 EP 和 DP 实现进行编码。它可能会在下一个服务包中更改。

标签: c# security asp.net-membership


【解决方案1】:

SqlMembershipProvider 派生自 MembershipProvider,从中继承 EncryptPassword() 和 DecryptPassword()。

查看带有 Reflector 的代码,如果密钥长度为 8 个字节,则该算法看起来是 DES,否则为 AES (Rijndael)。

【讨论】:

    【解决方案2】:

    SqlMembershipProvider 使用 System.Web.Security.MembershipProvider 作为其基类。正在基类上调用 EncryptPassword 和 DecryptPassword 方法。

    启动 .NET Reflector 并将其指向 System.Web.Security.MembershipProvider,您将看到他们是如何做到的。

    【讨论】:

      【解决方案3】:

      虽然加密代码是“公开的”,但会员提供者的默认加密是基于唯一的机器密钥。

      【讨论】:

        【解决方案4】:

        很确定基本的 Decrypt/EncryptPassword 使用标准的 .NET 实现 AES,可能在某处定义了一个密钥,可能是特定于机器的

        查看AesManaged 类。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-09
          • 1970-01-01
          • 2010-10-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多