MD5 Klasa

Definicja

Reprezentuje klasę abstrakcyjną, z której są dziedziczone wszystkie implementacje algorytmu wyznaczania wartości skrótu MD5.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
Dziedziczenie
Pochodne
Atrybuty

Przykłady

Poniższy przykład kodu oblicza wartość skrótu MD5 ciągu i zwraca skrót jako 32-znakowy ciąg w formacie szesnastkowym.The following code example computes the MD5 hash value of a string and returns the hash as a 32-character, hexadecimal-formatted string. Ciąg skrótu utworzony przez ten przykład kodu jest zgodny z dowolnymi funkcjami skrótu MD5 (na dowolnej platformie), które tworzą 32-znakowy ciąg skrótu w formacie szesnastkowym.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.

Uwagi

Funkcje mieszania mapują ciągi binarne o dowolnej długości na małe binarne ciągi o stałej długości.Hash functions map binary strings of an arbitrary length to small binary strings of a fixed length. Funkcja skrótu kryptograficznego ma właściwość, której nie można obliczyć, aby znaleźć dwie odrębne dane wejściowe, które mieszają się z tą samą wartością; oznacza to, że skróty dwóch zestawów danych powinny być takie same, jeśli odpowiadające im dane również są zgodne.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. Niewielkie zmiany w danych powodują duże, nieprzewidywalne zmiany w skrócie.Small changes to the data result in large, unpredictable changes in the hash.

Rozmiar skrótu dla algorytmu MD5 to 128 bitów.The hash size for the MD5 algorithm is 128 bits.

Metody ComputeHash klasy MD5 zwracają wartość skrótu jako tablicę 16 bajtów.The ComputeHash methods of the MD5 class return the hash as an array of 16 bytes. Należy zauważyć, że niektóre implementacje MD5 tworzą 32-znakowy skrót szesnastkowy.Note that some MD5 implementations produce a 32-character, hexadecimal-formatted hash. Aby współdziałać z takimi implementacjami, sformatuj wartość zwracaną ComputeHash metod jako wartość szesnastkową.To interoperate with such implementations, format the return value of the ComputeHash methods as a hexadecimal value.

Uwaga

Ze względu na kolizje problemów z algorytmem MD5/SHA1 firma Microsoft zaleca SHA256 lub SHA512.Due to collision problems with MD5/SHA1, Microsoft recommends SHA256 or SHA512. Rozważ użycie klasy SHA256 lub klasy SHA512 zamiast klasy MD5.Consider using the SHA256 class or the SHA512 class instead of the MD5 class. Używaj MD5 tylko w celu zapewnienia zgodności ze starszymi aplikacjami i danymi.Use MD5 only for compatibility with legacy applications and data.

Konstruktory

MD5()

Inicjuje nowe wystąpienie klasy MD5.Initializes a new instance of MD5.

Pola

HashSizeValue

Przedstawia rozmiar obliczanego kodu skrótu w bitach.Represents the size, in bits, of the computed hash code.

(Odziedziczone po HashAlgorithm)
HashValue

Reprezentuje wartość obliczanego kodu skrótu.Represents the value of the computed hash code.

(Odziedziczone po HashAlgorithm)
State

Reprezentuje stan obliczeń skrótu.Represents the state of the hash computation.

(Odziedziczone po HashAlgorithm)

Właściwości

CanReuseTransform

Pobiera wartość wskazującą, czy bieżące przekształcenie może być ponownie używane.Gets a value indicating whether the current transform can be reused.

(Odziedziczone po HashAlgorithm)
CanTransformMultipleBlocks

Gdy jest zastępowany w klasie pochodnej, pobiera wartość wskazującą, czy można przekształcać wiele bloków.When overridden in a derived class, gets a value indicating whether multiple blocks can be transformed.

(Odziedziczone po HashAlgorithm)
Hash

Pobiera wartość obliczanego kodu skrótu.Gets the value of the computed hash code.

(Odziedziczone po HashAlgorithm)
HashSize

Pobiera rozmiar obliczanego kodu skrótu w bitach.Gets the size, in bits, of the computed hash code.

(Odziedziczone po HashAlgorithm)
InputBlockSize

Gdy jest zastępowany w klasie pochodnej, pobiera rozmiar bloku danych wejściowych.When overridden in a derived class, gets the input block size.

(Odziedziczone po HashAlgorithm)
OutputBlockSize

Gdy jest zastępowany w klasie pochodnej, pobiera rozmiar bloku wyjściowego.When overridden in a derived class, gets the output block size.

(Odziedziczone po HashAlgorithm)

Metody

Clear()

Zwalnia wszystkie zasoby używane przez klasę HashAlgorithm.Releases all resources used by the HashAlgorithm class.

(Odziedziczone po HashAlgorithm)
ComputeHash(Byte[])

Oblicza wartość skrótu dla określonej tablicy bajtów.Computes the hash value for the specified byte array.

(Odziedziczone po HashAlgorithm)
ComputeHash(Byte[], Int32, Int32)

Oblicza wartość skrótu dla określonego regionu określonej tablicy bajtów.Computes the hash value for the specified region of the specified byte array.

(Odziedziczone po HashAlgorithm)
ComputeHash(Stream)

Oblicza wartość skrótu dla określonego obiektu Stream.Computes the hash value for the specified Stream object.

(Odziedziczone po HashAlgorithm)
Create()

Tworzy wystąpienie domyślnej implementacji algorytmu wyznaczania wartości skrótu MD5.Creates an instance of the default implementation of the MD5 hash algorithm.

Create(String)

Tworzy wystąpienie określonej implementacji algorytmu wyznaczania wartości skrótu MD5.Creates an instance of the specified implementation of the MD5 hash algorithm.

Dispose()

Zwalnia wszystkie zasoby używane przez bieżące wystąpienie klasy HashAlgorithm.Releases all resources used by the current instance of the HashAlgorithm class.

(Odziedziczone po HashAlgorithm)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element HashAlgorithm i opcjonalnie zwalnia zasoby zarządzane.Releases the unmanaged resources used by the HashAlgorithm and optionally releases the managed resources.

(Odziedziczone po HashAlgorithm)
Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Odziedziczone po Object)
HashCore(Byte[], Int32, Int32)

Gdy jest zastępowany w klasie pochodnej, kieruje dane zapisane w obiekcie do algorytmu wyznaczania wartości skrótu na potrzeby obliczania skrótu.When overridden in a derived class, routes data written to the object into the hash algorithm for computing the hash.

(Odziedziczone po HashAlgorithm)
HashCore(ReadOnlySpan<Byte>)

Przekierowuje dane zapisane w obiekcie do algorytmu wyznaczania wartości skrótu służącego do obliczania skrótu.Routes data written to the object into the hash algorithm for computing the hash.

(Odziedziczone po HashAlgorithm)
HashFinal()

Gdy jest zastępowany w klasie pochodnej, kończy obliczenia skrótu po ostatnim przetwarzaniu danych przez algorytm wyznaczania wartości skrótu.When overridden in a derived class, finalizes the hash computation after the last data is processed by the cryptographic hash algorithm.

(Odziedziczone po HashAlgorithm)
Initialize()

Resetuje algorytm wyznaczania wartości skrótu do stanu początkowego.Resets the hash algorithm to its initial state.

(Odziedziczone po HashAlgorithm)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)
TransformBlock(Byte[], Int32, Int32, Byte[], Int32)

Oblicza wartość skrótu dla określonego regionu tablicy bajtów wejściowych i kopiuje określony region tablicy bajtów wejściowych do określonego regionu tablicy bajtów wyjściowych.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.

(Odziedziczone po HashAlgorithm)
TransformFinalBlock(Byte[], Int32, Int32)

Oblicza wartość skrótu dla określonego regionu określonej tablicy bajtów.Computes the hash value for the specified region of the specified byte array.

(Odziedziczone po HashAlgorithm)
TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32)

Próbuje obliczyć wartość skrótu dla określonej tablicy bajtów.Attempts to compute the hash value for the specified byte array.

(Odziedziczone po HashAlgorithm)
TryHashFinal(Span<Byte>, Int32)

Podejmuje próbę sfinalizowania obliczeń skrótu po przetworzeniu ostatnich danych przez algorytm wyznaczania wartości skrótu.Attempts to finalize the hash computation after the last data is processed by the hash algorithm.

(Odziedziczone po HashAlgorithm)

Jawne implementacje interfejsu

IDisposable.Dispose()

Zwalnia zasoby niezarządzane używane przez element HashAlgorithm i opcjonalnie zwalnia zasoby zarządzane.Releases the unmanaged resources used by the HashAlgorithm and optionally releases the managed resources.

(Odziedziczone po HashAlgorithm)

Dotyczy

Zobacz też