Dans le cadre de mon projet de stage, je dois établir pour mon application une protection au login
on m'a suggéré de mettre en place une table sous MySql du type (idUser,pseudo,salt,hash)

Je rencontre une difficulté.

Lorsque un user s'inscrit, je génère un salt unique pour ce user que je stocke en BDD (CHAR(32))
Je recupere le pwd du user de l'inscrit et je génère donc le hash (à partir du PWD et du SALT) que je stocke le hash en BDD (CHAR(64))

Or lorsque je souhaite effectuer la vérification du login:

Je recupere le hash stocké en BDD et je regénère un hash à partir du SALT extrait de la BDD et du password renseigné dans le textbox de la fenêtre d'authentification.

Systématiquement le password regénéré ne correspond jamais à celui initialement renseigné dans la BDD après inscription.

Ci-dessous les différentes méthodes utilisées :

ci dessous la méthode pour générer le salt :

//GENERATION DU SALT
public string GENERER_Salt_String()
{
RNG = new RNGCryptoServiceProvider();
byte[] saltBytes = new byte[16];
RNG.GetBytes(saltBytes);
string saltString = ByteArrayToString(saltBytes);
Console.WriteLine(saltString);
return saltString;

la méthode pour le hashage

//GENERER HASH A PARTIR DU PASSWORD et DU SALT
public string Generer_SHA256_HASH_SALT_PASSWORD(string input, string salt)
{
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(input + salt);
SHA256Managed SHA256_Hash_String = new SHA256Managed();
byte[] hash = SHA256_Hash_String.ComputeHash(bytes);
string hashString = ByteArrayToString(hash);
return hashString;
}

la méthode conversion
//CONVERSION byte[] to string
private static string ByteArrayToString(byte[] ba)
{
StringBuilder hex = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
hex.AppendFormat("{02}", b);
return hex.ToString();
}


-------------------------------------------------------------------------------------------------
Après avoir parcouru pas mal d'articles et de forums qui traitait de la mise en place d'un salt & hash.
Je n'ai pas trouvé ce qui bloque. Je ne vois pas où je commets une erreur( format de stockage en BDD, erreur procédure, incompatibilité entre l'encodage de VS et celui de mySQL (en utf8), ....

Merci pour votre aide.