Calculer le hachage MD5 à partir d'une chaîne en C#

Harshit Jindal 12 octobre 2023
  1. Utilisation de l’algorithme MD5 en C#
  2. Utiliser la bibliothèque System.Security.Cryptography pour calculer le hachage MD5 à partir d’une chaîne C#
Calculer le hachage MD5 à partir d'une chaîne en C#

Les algorithmes de hachage sont des algorithmes mathématiques utilisés pour mapper des données d’entrée arbitraires sur un hachage de taille fixe. Ils sont utilisés à des fins multiples, telles que le stockage de données dans des structures de données telles que cartes de hachage, vérification de mot de passe, digestion de message et sécurité de la crypto-monnaie.

Le MD5 appartient à la classe des algorithmes de hachage de digestion de message. Rivest a développé MD5 et d’autres algorithmes comme MD2, MD4, etc.

L’algorithme a été initialement conçu pour authentifier les signatures numériques. Mais plus tard, de nombreuses vulnérabilités ont été découvertes qui ont conduit à sa dépréciation.

Néanmoins, il est toujours utilisé pour la vérification de l’intégrité des données et constitue une base pour comprendre les algorithmes avancés. L’algorithme MD5, comme tous les algorithmes de digestion de message, prend en entrée un message de longueur inconnue et le convertit en un hachage de taille fixe.

Une modification mineure de la chaîne d’entrée entraînera un hachage complètement différent. Cet article va apprendre à calculer le hachage MD5 en utilisant C#.

Utilisation de l’algorithme MD5 en C#

L’algorithme MD5 comprend les quatre étapes principales suivantes :

Tout d’abord, ajoutez des bits de remplissage.

Dans cette étape, nous ajoutons des bits de remplissage afin que le nombre total de bits devienne 64 inférieur au multiple le plus proche de 512. C’est fait pour que l’algorithme puisse traiter des données de la taille de 512 bits et à l’étape 2, la longueur de chaîne exprimée en 64 bits est ajoutée pour obtenir un multiple pair de 512.

Deuxièmement, ajoutez des bits de longueur.

Calculez la longueur de la chaîne en 64 bits. Ajoutez-les à la sortie formée à l’étape 1.

Troisièmement, initialisez le tampon MD.

Nous initialisons 4 tampons de digestion de messages de 32 bits nommés A, B, C et D. Ils sont les suivants :

A = 01 23 45 67
B = 89 ab cd ef
C = fe dc ba 98
D = 76 54 32 10

Quatrièmement, le traitement de blocs individuels de 512 bits.

Les bits entiers sont décomposés en blocs de taille 512. Chaque bloc formé est divisé en 16 sous-blocs de 32 bits. Tous les blocs 16 formés sont passés par une série d’opérations 4 avec les tampons A, B, C et D pour donner le hachage final.

Utiliser la bibliothèque System.Security.Cryptography pour calculer le hachage MD5 à partir d’une chaîne C#

using System;
using System.Security.Cryptography;
using System.Text;

public class Test {
  public static string ComputeMd5Hash(string message) {
    using (MD5 md5 = MD5.Create()) {
      byte[] input = Encoding.ASCII.GetBytes(message);
      byte[] hash = md5.ComputeHash(input);

      StringBuilder sb = new StringBuilder();
      for (int i = 0; i < hash.Length; i++) {
        sb.Append(hash[i].ToString("X2"));
      }
      return sb.ToString();
    }
  }
  public static void Main() {
    string message = "Welcome to DelfStack";
    Console.WriteLine(ComputeMd5Hash(message));
  }
}

Production:

53C62733BB54F2B720A32490E6C447FF

Dans le programme ci-dessus, nous créons un objet de la classe MD5 présent en C# qui fournit une implémentation prête à l’emploi de l’algorithme MD5 via la méthode ComputeHash().

Nous convertissons notre chaîne de message en un flux d'octets pour correspondre à la signature de la fonction de la méthode ComputeHash(), qui renvoie ensuite le résultat sous la forme d’un flux d'octets. Nous utilisons ensuite la classe string builder pour convertir le flux d’octets en une chaîne C# valide.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn