Asp.Net Core Identity, actualizando las contraseñas de texto plano existentes

Hemos personalizado Asp.Net Core para usar nuestra tabla de estudiantes en lugar de la tabla AspNetUser. Todo funciona bien para los nuevos estudiantes. Pero necesitamos actualizar las contraseñas de los estudiantes existentes. Me gustaría hacer algo como esto (enAccountController Login método) cuando un estudiante inicia sesión o esto se puede hacer una sola vez ...

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
{
    ViewData["ReturnUrl"] = returnUrl;
    if (ModelState.IsValid)
    {
        // Require the user to have a confirmed email before they can log on.
        var user = await _userManager.FindByEmailAsync(model.Email);
        if (user != null)
        {
            if (user.PasswordHash == null)
            {
                user.EmailConfirmed = true;
                user.UserName = model.Email;
                user.NormalizedEmail = model.Email.ToUpper();
                user.NormalizedUserName = user.NormalizedEmail;
                //user.PasswordHash = ?;
                //user.SecurityStamp = ?;
                //update user in database.
            }
            //continue on with login process
        }
    }
}

El siguiente código (delRegister método) crea un nuevo usuario y lo agrega a la base de datos. Esto no es lo que queremos.

var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
    // …

Respuestas a la pregunta(1)

Su respuesta a la pregunta