J'ai une API Web ASP.NET qui utilise ASP.NET Identity v2.2.1 pour gérer les utilisateurs. Je suis capable d'ajouter/modifier des utilisateurs sans problème. Cependant, j'ai un deuxième projet qui ne peut pas utiliser l'API mais doit pouvoir changer un mot de passe Users
directement via la base de données.Mot de passe de hachage manuel identique à ASP.NET Identity v2.2.1
J'essaie de comprendre comment hacher le mot de passe entré par l'utilisateur sans passer par l'API. Je dois m'assurer que j'utilise le même algorithme de hachage qu'utilise ASP.NET Identity. Je suis tombé sur du code dans this SO article mais je ne suis pas sûr si c'est le même algorithme de hachage utilisé par v2.2.1.
using using System.Security.Cryptography;
public static string HashPassword(string password)
{
private const int PBKDF2IterCount = 1000; // default for Rfc2898DeriveBytes
private const int PBKDF2SubkeyLength = 256/8; // 256 bits
private const int SaltSize = 128/8; // 128 bits
if (password == null)
{
throw new ArgumentNullException("password");
}
// Produce a version 0 (see comment above) text hash.
byte[] salt;
byte[] subkey;
using (var deriveBytes = new Rfc2898DeriveBytes(password, SaltSize, PBKDF2IterCount))
{
salt = deriveBytes.Salt;
subkey = deriveBytes.GetBytes(PBKDF2SubkeyLength);
}
var outputBytes = new byte[1 + SaltSize + PBKDF2SubkeyLength];
Buffer.BlockCopy(salt, 0, outputBytes, 1, SaltSize);
Buffer.BlockCopy(subkey, 0, outputBytes, 1 + SaltSize, PBKDF2SubkeyLength);
return Convert.ToBase64String(outputBytes);
}
Je voudrais éviter d'avoir à ajouter ASP.NET identité comme une dépendance à ce projet donc pourquoi je voudrais hash
le mot de passe manuellement.
Êtes-vous toujours une solution? – trailmax