我正在查看 .net 会员提供程序的源代码,它在 sqlmembershipprovider.cs 中有对 EncryptPassword 和 DecryptPassword 的调用,但我在源代码中的任何地方都看不到该方法。
他们使用什么算法?那个源不是也放出来了吗?
我正在查看 .net 会员提供程序的源代码,它在 sqlmembershipprovider.cs 中有对 EncryptPassword 和 DecryptPassword 的调用,但我在源代码中的任何地方都看不到该方法。
他们使用什么算法?那个源不是也放出来了吗?
SqlMembershipProvider 派生自 MembershipProvider,从中继承 EncryptPassword() 和 DecryptPassword()。
查看带有 Reflector 的代码,如果密钥为 8 字节长,则该算法看起来是 DES,否则为 AES (Rijndael)。
SqlMembershipProvider 使用 System.Web.Security.MembershipProvider 作为其基类。正在基类上调用 EncryptPassword 和 DecryptPassword 方法。
启动 .NET Reflector 并将其指向 System.Web.Security.MembershipProvider,您将看到他们是如何做到的。
虽然加密代码是“公开的”,但会员提供者的默认加密是基于唯一的机器密钥。
很确定基本 Decrypt/EncryptPassword 使用 AES 的标准 .NET 实现,可能在某处定义了一个密钥,可能是特定于机器的
请参阅AesManaged类。