Voilà comment faire pour stocker les mots de passe avec un Hash MD5.
Partons du principe que cette authentification est basé sur pattern n-tiers (DAL, Business, IHM) et que la table et la DAL ont déjà été créé.
Vous commencez par créer votre classe de gestion du Hash dans Business:
using System.Security.Cryptography;
public class MD5CryptGest
{
public string Get_A_MD5_Hash_from_String (string text)
{
//Instanciation d'un d'un service de Hash MD5;
MD5 svc = new MD5CryptoServiceProvider ();
//Convertion de la chaîne de caractères en Bytes
UnicodeEncoding encode = new UnicodeEncoding();
bytes[] buffer = encode.GetBytes(text);
//Création du Hash en Bytes puis convertionen String
bytes[] hash = svc.ComputeHash(buffer);
string result = Convert.ToBase64String(hash);
return result;
}
}
Ensuite toujours dans Business, vous créer votre gestion de l'authentification avec un requête Linq (N'oubliez pas de rajouter la référence System.Data.Entity):
using DAL;
public class Authentification
{
//Constructeur pour instancier ma connexion
public Authentification()
{
connection = new MaBaseEntities();
}
private MaBaseEntities connection;
private string authentification(string ID, string password)
{
//Requête LinQ
MD5CryptGest crrypting = new MD5CryptGest();
MaTable check = (from user in connection.MaTable
where user.userID.equals(ID)
select user).FirstOrDefault();
}
//Vérification que les informations correspondent
try
{
if (check.userID == ID && check.password == crypting.Get_A_MD5_Hash_from_String(password))
{
return "Access granted";
}
else
{
return "Access denied";
}
catch (Exception)
{
return "UserID not found";
}
}
}
Pour finir on passe dans le code behind de l'IHM :
private void Button_Click(object sender, RoutedEventArgs e)
{
Authentification AuthEntity = new Authentification ();
MessageBox.Show(AuthEntity.authentification(textboxID.text, textboxPassword.text));
}
Voilà voilà, c'est fini !
Le code est certainement perfectible alors correction, pistes de réflexion, encouragements, n'hésitez pas à poster vos commentaires.

Aucun commentaire:
Enregistrer un commentaire