Sommaire

Table de hachage en C#

Pour rappel, une table de hachage permet d’associer une empreinte à une donnée d’entrée, en général une chaîne de caractères. Cette empreinte identifie de manière unique la donnée. On voit donc tout l’intérêt de ce type de structure de données en cryptographie : une fois un mot de passe « haché », il suffit de stocker l’empreinte du mot de passe. On peut ainsi vérifier qu’un mot de passe est correct sans jamais avoir à le stocker en base de données. Ce procédé permet également de vérifier l’intégrité d’une chaîne de caractères, par exemple. Pour un algorithme donné, la chaîne de caractères doit donner exactement la même empreinte, quel que soit l’emplacement de la vérification.

Le hachage est disponible en C# dans cet espace de noms :

using System.Security.Cryptography.HashAlgorithm ;

La méthode de référence pour calculer l’empreinte d’un tableau de bytes est ComputeHash. Elle est disponible dans les classes suivantes associées respectivement à des algorithmes de hachage :

  • MD5CryptoServiceProvider pour l’algorithme MD5,

  • SHA1CryptoServiceProvider et SHA1 pour l’algorithme SHA-1,

  • SHA512CryptoServiceProvider et SHA512 pour SHA-2.

Dans l’exemple suivant, on génère une empreinte grâce ...