Asp.net @aspnet_成员身份_CreateUser的密码

Asp.net @aspnet_成员身份_CreateUser的密码,asp.net,Asp.net,应用:Nerddinner 此SP用于为新创建的用户插入密码。我试图找出@Password在应用程序代码中的来源,因为它是提供给这个SP的。 我在应用程序级别上查找它,但在应用程序级别上找不到它。有人知道SP在应用程序中用于传递@Password的位置吗 ALTER PROCEDURE [dbo].[aspnet_Membership_CreateUser] @ApplicationName nvarchar(256),

应用:Nerddinner

此SP用于为新创建的用户插入密码。我试图找出@Password在应用程序代码中的来源,因为它是提供给这个SP的。 我在应用程序级别上查找它,但在应用程序级别上找不到它。有人知道SP在应用程序中用于传递@Password的位置吗

  ALTER PROCEDURE [dbo].[aspnet_Membership_CreateUser]
            @ApplicationName                        nvarchar(256),
            @UserName                               nvarchar(256),
            @Password                               nvarchar(128),
            @PasswordSalt                           nvarchar(128),
            @Email                                  nvarchar(256),
            @PasswordQuestion                       nvarchar(256),
            @PasswordAnswer                         nvarchar(128),
            @IsApproved                             bit,
            @CurrentTimeUtc                         datetime,
            @CreateDate                             datetime = NULL,
            @UniqueEmail                            int      = 0,
            @PasswordFormat                         int      = 0,
            @UserId                                 uniqueidentifier OUTPUT

CreateUser SP由成员资格类调用。在代码中找不到它。但如果愿意,您可以覆盖它。

MS就是这样做的:

internal string EncodePassword(string pass, int passwordFormat, string salt)
    {
        if(passwordFormat == 0) // MembershipPasswordFormat.Clear
            return pass;

        byte[] bIn = Encoding.Unicode.GetBytes(pass);
        byte[] bSalt = Convert.FromBase64String(salt);
        byte[] bAll = new byte[bSalt.Length + bIn.Length];
        byte[] bRet = null;

        Buffer.BlockCopy(bSalt, 0, bAll, 0, bSalt.Length);
        Buffer.BlockCopy(bIn, 0, bAll, bSalt.Length, bIn.Length);
        if(passwordFormat == 1)
        { // MembershipPasswordFormat.Hashed
            HashAlgorithm s = HashAlgorithm.Create(Membership.HashAlgorithmType);
            bRet = s.ComputeHash(bAll);
        }
        else
        {
            bRet = EncryptPassword(bAll);
        }

        return Convert.ToBase64String(bRet);
    }

我想检查代码的原因是,我想看看代码是如何在应用程序级别生成“哈希”密码和密码salt的。CreateUser重载列表:正如您所看到的,没有重载方法接受密码salt。它是自动创建的。