Vous devez fondamentalement hacher vos mots de passe et les stocker dans la base de données. Vous ne les décryptez jamais mais comparez toujours les versions hachées. Quelques exemples de choses sont ci-dessous.
private static string CreateSalt(int size)
{
//Generate a cryptographic random number.
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] buff = new byte[size];
rng.GetBytes(buff);
// Return a Base64 string representation of the random number.
return Convert.ToBase64String(buff);
}
private static string CreatePasswordHash(string pwd, string salt)
{
string saltAndPwd = String.Concat(pwd, salt);
string hashedPwd =
FormsAuthentication.HashPasswordForStoringInConfigFile(
saltAndPwd, "sha1");
return hashedPwd;
}
Stockez le mot de passe dans la base de données dans le compte de l'utilisateur. Ensuite, lorsque l'utilisateur tente de se reconnecter la prochaine fois, récupérez le sel de la base de données et hachez-le comme d'habitude avec le mot de passe fourni par l'utilisateur lors de la connexion et comparez cette valeur à PasswordHash dans la base de données. Si elles sont identiques, l'utilisateur a fourni le mot de passe correct (quel qu'il soit). Si elles ne sont pas identiques, le mot de passe entré est incorrect.
duplication possible de [stocker les mots de passe dans SQL Server] (http://stackoverflow.com/questions/876342/storing-passwords-in-sql-server) – Yuck