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