ConsEco/Sources/Modele/Hash.cs

48 lines
1.6 KiB

using System;
using System.Collections;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Security.Cryptography;
using System.Text;
namespace Model
{
/// <summary>
/// Permet de gérer le hachage des mots de passe à des buts de sécurité.
/// </summary>
public class Hash
{
/// <summary>
/// Permet d'obtenir le hachage du mot de passe
/// </summary>
/// <param name="mdp">Le mot de passe dont on souhaite obtenir le hachage.</param>
/// <returns>Le mot de passe haché.</returns>
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;
}
/// <summary>
/// Permet de vérifier si 2 mots de passe haché sont les mêmes.
/// </summary>
/// <param name="mdpBdd"> Le mot de passe qui est contenu dans la base de donnée.</param>
/// <param name="mdpSent"> Le mot de passe dont on souhaite savoir si il est égale à celui de la base de donnée.</param>
/// <returns> Un boolean égale à True si les mots de passe sont égaux. </returns>
public bool IsEqualHash(string mdpBdd, string mdpSent)
{
string hashedMdpSent = CreateHashCode(mdpSent);
return hashedMdpSent.Equals(mdpBdd);
}
}
}