MD5 Classe

Définition

Représente la classe abstraite dont toutes les implémentations de l'algorithme de hachage MD5 héritent.Represents the abstract class from which all implementations of the MD5 hash algorithm inherit.

public ref class MD5 abstract : System::Security::Cryptography::HashAlgorithm
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class MD5 : System.Security.Cryptography.HashAlgorithm
type MD5 = class
    inherit HashAlgorithm
Public MustInherit Class MD5
Inherits HashAlgorithm
Héritage
Dérivé
Attributs

Exemples

L’exemple de code suivant calcule MD5 la valeur de hachage d’une chaîne et retourne le hachage sous forme de chaîne de 32 caractères au format hexadécimal.The following code example computes the MD5 hash value of a string and returns the hash as a 32-character, hexadecimal-formatted string. La chaîne de hachage créée par cet exemple de code est compatible avec toute fonction de hachage MD5 (sur n’importe quelle plateforme) qui crée une chaîne de hachage au format hexadécimal de 32 caractères.The hash string created by this code example is compatible with any MD5 hash function (on any platform) that creates a 32-character, hexadecimal-formatted hash string.

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

namespace MD5Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            string source = "Hello World!";
            using (MD5 md5Hash = MD5.Create())
            {
                string hash = GetMd5Hash(md5Hash, source);

                Console.WriteLine("The MD5 hash of " + source + " is: " + hash + ".");

                Console.WriteLine("Verifying the hash...");

                if (VerifyMd5Hash(md5Hash, source, hash))
                {
                    Console.WriteLine("The hashes are the same.");
                }
                else
                {
                    Console.WriteLine("The hashes are not same.");
                }
            }



        }
        static string GetMd5Hash(MD5 md5Hash, string input)
        {

            // Convert the input string to a byte array and compute the hash.
            byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));

            // Create a new Stringbuilder to collect the bytes
            // and create a string.
            StringBuilder sBuilder = new StringBuilder();

            // Loop through each byte of the hashed data 
            // and format each one as a hexadecimal string.
            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }

            // Return the hexadecimal string.
            return sBuilder.ToString();
        }

        // Verify a hash against a string.
        static bool VerifyMd5Hash(MD5 md5Hash, string input, string hash)
        {
            // Hash the input.
            string hashOfInput = GetMd5Hash(md5Hash, input);

            // Create a StringComparer an compare the hashes.
            StringComparer comparer = StringComparer.OrdinalIgnoreCase;

            if (0 == comparer.Compare(hashOfInput, hash))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

    }
}

// This code example produces the following output:
//
// The MD5 hash of Hello World! is: ed076287532e86365e841e92bfc50d8c.
// Verifying the hash...
// The hashes are the same.
Imports System.Security.Cryptography
Imports System.Text


Class Program

    Shared Sub Main(ByVal args() As String)
        Dim [source] As String = "Hello World!"
        Using md5Hash As MD5 = MD5.Create()

            Dim hash As String = GetMd5Hash(md5Hash, source)

            Console.WriteLine("The MD5 hash of " + source + " is: " + hash + ".")

            Console.WriteLine("Verifying the hash...")

            If VerifyMd5Hash(md5Hash, [source], hash) Then
                Console.WriteLine("The hashes are the same.")
            Else
                Console.WriteLine("The hashes are not same.")
            End If
        End Using
    End Sub



    Shared Function GetMd5Hash(ByVal md5Hash As MD5, ByVal input As String) As String

        ' Convert the input string to a byte array and compute the hash.
        Dim data As Byte() = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input))

        ' Create a new Stringbuilder to collect the bytes
        ' and create a string.
        Dim sBuilder As New StringBuilder()

        ' Loop through each byte of the hashed data 
        ' and format each one as a hexadecimal string.
        Dim i As Integer
        For i = 0 To data.Length - 1
            sBuilder.Append(data(i).ToString("x2"))
        Next i

        ' Return the hexadecimal string.
        Return sBuilder.ToString()

    End Function 'GetMd5Hash


    ' Verify a hash against a string.
    Shared Function VerifyMd5Hash(ByVal md5Hash As MD5, ByVal input As String, ByVal hash As String) As Boolean
        ' Hash the input.
        Dim hashOfInput As String = GetMd5Hash(md5Hash, input)

        ' Create a StringComparer an compare the hashes.
        Dim comparer As StringComparer = StringComparer.OrdinalIgnoreCase

        If 0 = comparer.Compare(hashOfInput, hash) Then
            Return True
        Else
            Return False
        End If

    End Function 'VerifyMd5Hash
End Class
' This code example produces the following output:
'
' The MD5 hash of Hello World! is: ed076287532e86365e841e92bfc50d8c.
' Verifying the hash...
' The hashes are the same.

Remarques

Les fonctions de hachage mappent les chaînes binaires d’une longueur arbitraire aux petites chaînes binaires d’une longueur fixe.Hash functions map binary strings of an arbitrary length to small binary strings of a fixed length. Une fonction de hachage de chiffrement a la propriété qu’il est impossible de recalculer en calcul deux entrées distinctes qui hachent la même valeur; autrement dit, les hachages de deux jeux de données doivent correspondre si les données correspondantes correspondent également.A cryptographic hash function has the property that it is computationally infeasible to find two distinct inputs that hash to the same value; that is, hashes of two sets of data should match if the corresponding data also matches. Les petites modifications apportées aux données entraînent des modifications importantes et imprévisibles dans le hachage.Small changes to the data result in large, unpredictable changes in the hash.

La taille de hachage de MD5 l’algorithme est de 128 bits.The hash size for the MD5 algorithm is 128 bits.

Les ComputeHash méthodes de la MD5 classe retournent le hachage sous la forme d’un tableau de 16 octets.The ComputeHash methods of the MD5 class return the hash as an array of 16 bytes. Notez que certaines implémentations MD5 produisent un hachage au format hexadécimal de 32 caractères.Note that some MD5 implementations produce a 32-character, hexadecimal-formatted hash. Pour interagir avec de telles implémentations, mettez en forme la valeur de ComputeHash retour des méthodes sous la forme d’une valeur hexadécimale.To interoperate with such implementations, format the return value of the ComputeHash methods as a hexadecimal value.

Notes

En raison de problèmes de collision avec MD5/SHA1, Microsoft recommande SHA256 ou SHA512.Due to collision problems with MD5/SHA1, Microsoft recommends SHA256 or SHA512. Envisagez SHA256 d’utiliser la SHA512 classe ou la classe MD5 au lieu de la classe.Consider using the SHA256 class or the SHA512 class instead of the MD5 class. À MD5 utiliser uniquement pour la compatibilité avec les applications et les données héritées.Use MD5 only for compatibility with legacy applications and data.

Constructeurs

MD5()

Initialise une nouvelle instance de MD5.Initializes a new instance of MD5.

Champs

HashSizeValue

Représente la taille, en bits, du code de hachage calculé.Represents the size, in bits, of the computed hash code.

(Hérité de HashAlgorithm)
HashValue

Représente la valeur du code de hachage calculé.Represents the value of the computed hash code.

(Hérité de HashAlgorithm)
State

Représente l'état du calcul du hachage.Represents the state of the hash computation.

(Hérité de HashAlgorithm)

Propriétés

CanReuseTransform

Obtient une valeur indiquant si la transformation actuelle peut être réutilisée.Gets a value indicating whether the current transform can be reused.

(Hérité de HashAlgorithm)
CanTransformMultipleBlocks

En cas de substitution dans une classe dérivée, obtient une valeur indiquant si plusieurs blocs peuvent être transformés.When overridden in a derived class, gets a value indicating whether multiple blocks can be transformed.

(Hérité de HashAlgorithm)
Hash

Obtient la valeur du code de hachage calculé.Gets the value of the computed hash code.

(Hérité de HashAlgorithm)
HashSize

Obtient la taille, en bits, du code de hachage calculé.Gets the size, in bits, of the computed hash code.

(Hérité de HashAlgorithm)
InputBlockSize

En cas de substitution dans une classe dérivée, obtient la taille du bloc d'entrée.When overridden in a derived class, gets the input block size.

(Hérité de HashAlgorithm)
OutputBlockSize

En cas de substitution dans une classe dérivée, obtient la taille du bloc de sortie.When overridden in a derived class, gets the output block size.

(Hérité de HashAlgorithm)

Méthodes

Clear()

Libère toutes les ressources utilisées par la classe HashAlgorithm.Releases all resources used by the HashAlgorithm class.

(Hérité de HashAlgorithm)
ComputeHash(Byte[])

Calcule la valeur de hachage pour le tableau d'octets spécifié.Computes the hash value for the specified byte array.

(Hérité de HashAlgorithm)
ComputeHash(Byte[], Int32, Int32)

Calcule la valeur de hachage pour la région spécifiée du tableau d'octets spécifié.Computes the hash value for the specified region of the specified byte array.

(Hérité de HashAlgorithm)
ComputeHash(Stream)

Calcule la valeur de hachage pour l'objet Stream spécifié.Computes the hash value for the specified Stream object.

(Hérité de HashAlgorithm)
Create()

Crée une instance de l'implémentation par défaut de l'algorithme de hachage MD5.Creates an instance of the default implementation of the MD5 hash algorithm.

Create(String)

Crée une instance de l'implémentation spécifiée de l'algorithme de hachage MD5.Creates an instance of the specified implementation of the MD5 hash algorithm.

Dispose()

Libère toutes les ressources utilisées par l'instance actuelle de la classe HashAlgorithm.Releases all resources used by the current instance of the HashAlgorithm class.

(Hérité de HashAlgorithm)
Dispose(Boolean)

Libère les ressources non managées utilisées par HashAlgorithm et libère éventuellement les ressources managées.Releases the unmanaged resources used by the HashAlgorithm and optionally releases the managed resources.

(Hérité de HashAlgorithm)
Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
HashCore(Byte[], Int32, Int32)

En cas de substitution dans une classe dérivée, achemine les données écrites dans l'objet vers l'algorithme de hachage pour calculer le hachage.When overridden in a derived class, routes data written to the object into the hash algorithm for computing the hash.

(Hérité de HashAlgorithm)
HashCore(ReadOnlySpan<Byte>) (Hérité de HashAlgorithm)
HashFinal()

En cas de substitution dans une classe dérivée, finalise le calcul de hachage une fois les dernières données traitées par l'objet de flux de chiffrement.When overridden in a derived class, finalizes the hash computation after the last data is processed by the cryptographic stream object.

(Hérité de HashAlgorithm)
Initialize()

Initialise une implémentation de la classe HashAlgorithm.Initializes an implementation of the HashAlgorithm class.

(Hérité de HashAlgorithm)
MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet en cours.Returns a string that represents the current object.

(Hérité de Object)
TransformBlock(Byte[], Int32, Int32, Byte[], Int32)

Calcule la valeur de hachage pour la région spécifiée du tableau d'octets d'entrée et copie la région spécifiée du tableau d'octets d'entrée dans la région spécifiée du tableau d'octets de sortie.Computes the hash value for the specified region of the input byte array and copies the specified region of the input byte array to the specified region of the output byte array.

(Hérité de HashAlgorithm)
TransformFinalBlock(Byte[], Int32, Int32)

Calcule la valeur de hachage pour la région spécifiée du tableau d'octets spécifié.Computes the hash value for the specified region of the specified byte array.

(Hérité de HashAlgorithm)
TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32) (Hérité de HashAlgorithm)
TryHashFinal(Span<Byte>, Int32) (Hérité de HashAlgorithm)

Implémentations d’interfaces explicites

IDisposable.Dispose()

Libère les ressources non managées utilisées par HashAlgorithm et libère éventuellement les ressources managées.Releases the unmanaged resources used by the HashAlgorithm and optionally releases the managed resources.

(Hérité de HashAlgorithm)

S’applique à

Voir aussi