MD5CryptoServiceProvider-Klasse
Berechnet den MD5-Hashwert für die Eingabedaten unter Verwendung der vom Kryptografiedienstanbieter (Cryptographic Service Provider, CSP) zur Verfügung gestellten Implementierung. Diese Klasse kann nicht vererbt werden.
Namespace: System.Security.Cryptography
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<ComVisibleAttribute(True)> _
Public NotInheritable Class MD5CryptoServiceProvider
Inherits MD5
'Usage
Dim instance As MD5CryptoServiceProvider
[ComVisibleAttribute(true)]
public sealed class MD5CryptoServiceProvider : MD5
[ComVisibleAttribute(true)]
public ref class MD5CryptoServiceProvider sealed : public MD5
/** @attribute ComVisibleAttribute(true) */
public final class MD5CryptoServiceProvider extends MD5
ComVisibleAttribute(true)
public final class MD5CryptoServiceProvider extends MD5
Hinweise
Hashfunktionen ordnen binäre Zeichenfolgen beliebiger Länge kleinen binären Zeichenfolgen fester Länge zu. Kryptografische Hashfunktionen sind dadurch gekennzeichnet, dass es rechnerisch unmöglich ist, zwei verschiedene Eingabewerte zu ermitteln, die denselben Hashwert ergeben. Daher sind die Hashs zweier Datenmengen identisch, wenn auch die entsprechenden Daten identisch sind. Kleine Änderungen an den Daten führen zu beträchtlichen unvorhersehbaren Änderungen des Hash.
Die Hashgröße für die MD5CryptoServiceProvider-Klasse beträgt 128 Bits.
Die ComputeHash-Methoden der MD5CryptoServiceProvider-Klasse geben den Hash als 16-Byte-Array zurück. Beachten Sie, dass einige MD5-Implementierungen einen Hash in Hexadezimalformat mit einer Länge von 32 Zeichen erzeugen. Bei der Interaktion mit den betreffenden Implementierungen sollten Sie den Rückgabewert der ComputeHash-Methoden als Hexadezimalwert formatieren.
Beispiel
Im folgenden Codebeispiel wird der MD5-Hashwert für data
berechnet und zurückgegeben.
Function MD5hash(data() As Byte) As Byte()
' This is one implementation of the abstract class MD5.
Dim md5 As New MD5CryptoServiceProvider()
Dim result As Byte() = md5.ComputeHash(data)
Return result
End Function
byte[] MD5hash (byte[] data)
{
// This is one implementation of the abstract class MD5.
MD5 md5 = new MD5CryptoServiceProvider();
byte[] result = md5.ComputeHash(data);
return result;
}
private:
array<Byte>^ MD5hash( array<Byte>^data )
{
// This is one implementation of the abstract class MD5.
MD5^ md5 = gcnew MD5CryptoServiceProvider;
array<Byte>^ result = md5->ComputeHash( data );
return result;
}
ubyte[] MD5hash(ubyte data[])
{
// This is one implementation of the abstract class MD5.
MD5 md5 = new MD5CryptoServiceProvider();
ubyte result[] = md5.ComputeHash(data);
return result;
} //MD5hash
Im folgenden Codebeispiel wird der MD5-Hashwert für eine Zeichenfolge berechnet und der Hash als Zeichenfolge in Hexadezimalformat mit einer Länge von 32 Zeichen zurückgegeben. Die in diesem Codebeispiel erstellte Hashzeichenfolge ist mit allen MD5-Hashfunktionen (auf allen Plattformen) kompatibel, bei denen eine Hashzeichenfolge in Hexadezimalformat mit einer Länge von 32 Zeichen erzeugt wird.
Imports System
Imports System.Security.Cryptography
Imports System.Text
Module Example
' Hash an input string and return the hash as
' a 32 character hexadecimal string.
Function getMd5Hash(ByVal input As String) As String
' Create a new instance of the MD5CryptoServiceProvider object.
Dim md5Hasher As New MD5CryptoServiceProvider()
' Convert the input string to a byte array and compute the hash.
Dim data As Byte() = md5Hasher.ComputeHash(Encoding.Default.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
' Verify a hash against a string.
Function verifyMd5Hash(ByVal input As String, ByVal hash As String) As Boolean
' Hash the input.
Dim hashOfInput As String = getMd5Hash(input)
' Create a StringComparer an comare the hashes.
Dim comparer As StringComparer = StringComparer.OrdinalIgnoreCase
If 0 = comparer.Compare(hashOfInput, hash) Then
Return True
Else
Return False
End If
End Function
Sub Main()
Dim source As String = "Hello World!"
Dim hash As String = getMd5Hash(source)
Console.WriteLine("The MD5 hash of " + source + " is: " + hash + ".")
Console.WriteLine("Verifying the hash...")
If verifyMd5Hash(source, hash) Then
Console.WriteLine("The hashes are the same.")
Else
Console.WriteLine("The hashes are not same.")
End If
End Sub
End Module
' This code example produces the following output:
'
' The MD5 hash of Hello World! is: ed076287532e86365e841e92bfc50d8c.
' Verifying the hash...
' The hashes are the same.
using System;
using System.Security.Cryptography;
using System.Text;
class Example
{
// Hash an input string and return the hash as
// a 32 character hexadecimal string.
static string getMd5Hash(string input)
{
// Create a new instance of the MD5CryptoServiceProvider object.
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hasher.ComputeHash(Encoding.Default.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(string input, string hash)
{
// Hash the input.
string hashOfInput = getMd5Hash(input);
// Create a StringComparer an comare the hashes.
StringComparer comparer = StringComparer.OrdinalIgnoreCase;
if (0 == comparer.Compare(hashOfInput, hash))
{
return true;
}
else
{
return false;
}
}
static void Main()
{
string source = "Hello World!";
string hash = getMd5Hash(source);
Console.WriteLine("The MD5 hash of " + source + " is: " + hash + ".");
Console.WriteLine("Verifying the hash...");
if (verifyMd5Hash(source, hash))
{
Console.WriteLine("The hashes are the same.");
}
else
{
Console.WriteLine("The hashes are not same.");
}
}
}
// This code example produces the following output:
//
// The MD5 hash of Hello World! is: ed076287532e86365e841e92bfc50d8c.
// Verifying the hash...
// The hashes are the same.
Vererbungshierarchie
System.Object
System.Security.Cryptography.HashAlgorithm
System.Security.Cryptography.MD5
System.Security.Cryptography.MD5CryptoServiceProvider
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0
Siehe auch
Referenz
MD5CryptoServiceProvider-Member
System.Security.Cryptography-Namespace