2

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

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

4

4 回答 4

3

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

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

于 2008-11-11T14:56:27.057 回答
0

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

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

于 2008-11-11T14:56:41.800 回答
0

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

于 2008-11-11T14:58:41.513 回答
0

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

请参阅AesManaged类。

于 2008-11-11T15:04:26.323 回答