MD5 MD5 MD5 MD5 Class

Definicja

Reprezentuje klasę abstrakcyjną, z której są dziedziczone wszystkie MD5 implementacje algorytmu wyznaczania wartości skrótu.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 MD5 wartość skrótu ciągu i zwraca skrót jako 32-znakowy ciąg szesnastkowy.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
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 'Main



    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 'Program 
' 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 MD5 algorytmu to 128 bitów.The hash size for the MD5 algorithm is 128 bits.

ComputeHash MetodyMD5 klasy 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ść ComputeHash zwracaną z 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 SHA256 klasy SHA512 lub klasy zamiast MD5 klasy.Consider using the SHA256 class or the SHA512 class instead of the MD5 class. Służy MD5 tylko do zgodności ze starszymi aplikacjami i danymi.Use MD5 only for compatibility with legacy applications and data.

Konstruktory

MD5() MD5() MD5() MD5()

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

Metody

Clear() Clear() Clear() Clear()

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

(Inherited from HashAlgorithm)
ComputeHash(Byte[]) ComputeHash(Byte[]) ComputeHash(Byte[]) ComputeHash(Byte[])

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

(Inherited from HashAlgorithm)
ComputeHash(Byte[], Int32, Int32) ComputeHash(Byte[], Int32, Int32) ComputeHash(Byte[], Int32, Int32) 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.

(Inherited from HashAlgorithm)
ComputeHash(Stream) ComputeHash(Stream) ComputeHash(Stream) ComputeHash(Stream)

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

(Inherited from HashAlgorithm)
Create() Create() Create() Create()

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

Create(String) Create(String) Create(String) Create(String)

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

Dispose() Dispose() Dispose() Dispose()

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

(Inherited from HashAlgorithm)
Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

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

(Inherited from HashAlgorithm)
Equals(Object) Equals(Object) Equals(Object) 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.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

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

(Inherited from Object)
GetType() GetType() GetType() GetType()

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

(Inherited from Object)
HashCore(Byte[], Int32, Int32) HashCore(Byte[], Int32, Int32) HashCore(Byte[], Int32, Int32) 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.

(Inherited from HashAlgorithm)
HashCore(ReadOnlySpan<Byte>) HashCore(ReadOnlySpan<Byte>) HashCore(ReadOnlySpan<Byte>) HashCore(ReadOnlySpan<Byte>) Inherited from HashAlgorithm
HashFinal() HashFinal() HashFinal() HashFinal()

Gdy jest zastępowany w klasie pochodnej, kończy obliczenia skrótu po ostatnim przetwarzaniu danych przez obiekt strumienia kryptograficznego.When overridden in a derived class, finalizes the hash computation after the last data is processed by the cryptographic stream object.

(Inherited from HashAlgorithm)
Initialize() Initialize() Initialize() Initialize()

Inicjuje implementację HashAlgorithm klasy.Initializes an implementation of the HashAlgorithm class.

(Inherited from HashAlgorithm)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Tworzy płytką kopię bieżącego Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

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

(Inherited from Object)
TransformBlock(Byte[], Int32, Int32, Byte[], Int32) TransformBlock(Byte[], Int32, Int32, Byte[], Int32) TransformBlock(Byte[], Int32, Int32, Byte[], Int32) 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.

(Inherited from HashAlgorithm)
TransformFinalBlock(Byte[], Int32, Int32) TransformFinalBlock(Byte[], Int32, Int32) TransformFinalBlock(Byte[], Int32, Int32) 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.

(Inherited from HashAlgorithm)
TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32) TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32) TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32) TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32) Inherited from HashAlgorithm
TryHashFinal(Span<Byte>, Int32) TryHashFinal(Span<Byte>, Int32) TryHashFinal(Span<Byte>, Int32) TryHashFinal(Span<Byte>, Int32) Inherited from HashAlgorithm

Właściwości

CanReuseTransform CanReuseTransform CanReuseTransform 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.

(Inherited from HashAlgorithm)
CanTransformMultipleBlocks CanTransformMultipleBlocks CanTransformMultipleBlocks 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.

(Inherited from HashAlgorithm)
Hash Hash Hash Hash

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

(Inherited from HashAlgorithm)
HashSize HashSize HashSize HashSize

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

(Inherited from HashAlgorithm)
InputBlockSize InputBlockSize InputBlockSize 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.

(Inherited from HashAlgorithm)
OutputBlockSize OutputBlockSize OutputBlockSize OutputBlockSize

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

(Inherited from HashAlgorithm)

Pola

HashSizeValue HashSizeValue HashSizeValue HashSizeValue

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

(Inherited from HashAlgorithm)
HashValue HashValue HashValue HashValue

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

(Inherited from HashAlgorithm)
State State State State

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

(Inherited from HashAlgorithm)

Jawne implementacje interfejsu

IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose()

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

(Inherited from HashAlgorithm)

Dotyczy

Zobacz też