J'ai le code suivant, qui hash un mot de passe comme entrée par l'utilisateur, puis il stocke dans une base de données SQL Server:mot de passe ASP.NET utilisant Hash MD5
Byte[] originalPassword;
Byte[] hashedPassword;
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
UTF8Encoding encoder = new UTF8Encoding();
originalPassword = encoder.GetBytes(passwordBox.Text);
hashedPassword = md5Hasher.ComputeHash(originalPassword);
command.Parameters.Add(new SqlParameter("Password", hashedPassword));
command.ExecuteNonQuery();
Mon problème est que J'ai un certain nombre de mots de passe en clair qui sont déjà stockés dans la base de données. Comment exactement suis-je pour les modifier dans ce nouveau format haché, puisqu'ils apparaissent comme '0xA99ED ....'?
Ok, donc vous devez utiliser MD5 pour une raison quelconque ... ne pourriez-vous au moins utiliser un sel, ou même stocker le hachage entier? De toute façon, vous semblez supposer que les chaînes et les binaires sont équivalents - ils ne le sont pas, il doit y avoir un encodage. – Aaronaught
Quel est le problème? Vous ne pouvez pas attendre qu'une colonne binary16 ait le même résultat lorsqu'elle est changée en nvarchar. –
Je pense que votre problème réside dans cette phrase: «J'ai entré manuellement un MD5 en format de chaîne et ai changé le type de données en binaire (16)». Si vous avez entré une représentation hexadécimale du hachage, et qu'elle a été convertie en binaire en prenant la valeur binaire de chaque caractère dans la représentation hexadécimale, il est normal que le résultat ne soit pas le même ... –