using System;
using System.Collections;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Security.Cryptography;
using System.Text;
namespace Model
{
///
/// Permet de gérer le hachage des mots de passe à des buts de sécurité.
///
public class Hash
{
///
/// Permet d'obtenir le hachage du mot de passe
///
/// Le mot de passe dont on souhaite obtenir le hachage.
/// Le mot de passe haché.
public string CreateHashCode(string mdp)
{
string hashString = "";
byte[] hash;
using (SHA512 shaM = new SHA512Managed())
{
hash = shaM.ComputeHash(Encoding.UTF8.GetBytes(mdp));
}
foreach (byte b in hash)
{
hashString = hashString + b;
}
return hashString;
}
///
/// Permet de vérifier si 2 mots de passe haché sont les mêmes.
///
/// Le mot de passe qui est contenu dans la base de donnée.
/// Le mot de passe dont on souhaite savoir si il est égale à celui de la base de donnée.
/// Un boolean égale à True si les mots de passe sont égaux.
public bool IsEqualHash(string mdpBdd, string mdpSent)
{
string hashedMdpSent = CreateHashCode(mdpSent);
return hashedMdpSent.Equals(mdpBdd);
}
}
}