Hashage sha1 et md5 avec ou sans sel

Soyez le premier à donner votre avis sur cette source.

Vue 19 442 fois - Téléchargée 743 fois

Description

Crypter des mots de passe pour une application ou même une application réseau est un peu risqué lorsque le hashage existe. Crypter en SHA1 et MD5, c'est bien, mais c'est d'autant mieux si on peut l'améliorer d'un paramètre personnel pour chaque mot de passe à crypter.

C'est pour ça que le sel est là. Dans cet exemple, le mot de passe sera hashé suivant la concaténation du nom, du prénom et du mot de passe, mais rien n'empêcherait de prendre d'autres paramètres ou bien de générer un nombre aléatoire à retenir quelque part, enfin bref, libre cours à l'imagination de tous.

Source / Exemple :


L'action du click : 
		private void cmdHash_Click(object sender, System.EventArgs e)
		{
			txtHashed.Text = HashString(txtOriginal.Text);
			String strsalt = txtOriginal.Text+this.tbNom.Text+this.tbPrenom.Text;
			txtHashedSel.Text = HashString(strsalt);
		}

La fonction de hash de la chaîne de caractères : 
		private string HashString(string Value)
		{
			mhash = SetHash();

			// Convertit la chaîne originale en un tableau de Bytes
			byte[] bytValue = System.Text.Encoding.UTF8.GetBytes(Value);

			// Procède au hashage et retourne un tableau de Bytes
			byte[] bytHash = mhash.ComputeHash(bytValue);

			mhash.Clear();

			// Retourne une chaîne de caractères en base 64 de la valeur hashée
			return Convert.ToBase64String(bytHash);
		}

en fonction du choix de l'algo de cryptage
		private HashAlgorithm SetHash()
		{
			if(this.rbSHA1.Checked)
				return new SHA1CryptoServiceProvider();
			else
				return new MD5CryptoServiceProvider();
		}

Et c'est tout...

Conclusion :


Pour ceux qui veulent des renseignements, n'hésitez pas à me contacter. Vous pouvez aussi visiter le site que nous avons réalisé entré étudiants pour l'entre-aide sur l'étude, ayant (pour en être l'initiateur) le même esprit que CodeS-SourceS : le partage. www.hesit.be

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Messages postés
38
Date d'inscription
vendredi 24 novembre 2000
Statut
Membre
Dernière intervention
9 octobre 2008

Bonjour

Merci pour ce code. Pour des raison de compatibilité j'ai du modifier pour avoir le meme résultat u'un codage en MD5 sous javascript ou php voici la modif:

// Convertit la chaîne originale en un tableau de Bytes
byte[] bytValue = Encoding.ASCII.GetBytes(Value);
// Procède au hashage et retourne un tableau de Bytes
byte[] bytHash = mhash.ComputeHash(bytValue);
mhash.Clear();

StringBuilder los = new StringBuilder();
//Par cour du tableau de byte
foreach(byte lo in bytHash)
{
//Convertir un nombre en chaine Hexadécimale en utilisant une surcharge de ToString() et le format X.
los.Append(lo.ToString("X2", null));
}
// Retourne une chaîne de caractères de la valeur hashée
return los.ToString();

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.