| 

.NET C# Java Javascript Exception

3
Gibt es da eine Lösung oder ein Code-Schnipsel?
11.02.2011
Perf 81 3
3 Antworten
5
Worauf willst du den MD5 Berechnen?

Hier ein Beispiel für MD5 auf Basis eines Strings.

Alternativ kannst du das ganze natürlich auch auf einem Stream z.bsp. FileStream aufbauen.

string myValue = "Test";

byte[] data = Encoding.Default.GetBytes(myValue);
using (MD5 algorithm = MD5.Create())
{
byte[] hashInBytes = algorithm.ComputeHash(data);
string resultInBitFormat = BitConverter.ToString(hashInBytes);
string resultAsBase64 = Convert.ToBase64String(hashInBytes);

Console.WriteLine("Plain {0}", myValue);
Console.WriteLine("Bit {0}", resultInBitFormat);
Console.WriteLine("Base64 {0}", resultAsBase64);
}
11.02.2011
Gentlehag 1,0k 2 7
Sehr gut. Nicht zu kurz und nicht zu lang. +1
Hendrik Lösch 11.02.2011
2
Hier noch eine alternative Implementierung als String-Extension:

/// <summary>Gibt einen MD5 Hash als String zurück</summary>
/// <param name="textToHash">string der Gehasht werden soll.</param>
/// <returns>Hash als string.</returns>
/// <exampel>
/// string md5 = "abs".GetMD5Hash();
/// </exampel>
[DebuggerStepThrough]
public static string GetMD5Hash(this string textToHash) {
//-----------------------------------------------------------------------
// Prüfen ob Daten übergeben wurden.
//-----------------------------------------------------------------------
if (string.IsNullOrEmpty(textToHash)) {
return string.Empty;
}

//-----------------------------------------------------------------------
// MD5 Hash aus dem String berechnen. Dazu muss der string in ein Byte[]
// zerlegt werden. Danach muss das Resultat wieder zurück in ein String.
//-----------------------------------------------------------------------
MD5 md5 = new MD5CryptoServiceProvider();
byte[] byteTextToHash = Encoding.Default.GetBytes(textToHash);
byte[] result = md5.ComputeHash(byteTextToHash);

md5.Dispose();

return BitConverter.ToString(result);
}
11.02.2011
Floyd 11,0k 3 9
1
using System.Security.Cryptography;

public static String GetMd5Hash(String value)
{
Byte[] bytes;
var hashValue = new Byte[1];
var sb = new StringBuilder();

var MD5 = new MD5CryptoServiceProvider();
bytes = Encoding.ASCII.GetBytes(value);
hashValue = MD5.ComputeHash(bytes);

for (var i = 0; i <= hashValue.Length - 1; i++)
{
sb.Append(hashValue.ToString("X2"));
}
return sb.ToString();
}[/code]
11.02.2011
Mario Priebe 5,8k 2 9
Bei Instanzen von HashAlgorithm sollte man an das Dispose denken :-)
Gentlehag 11.02.2011
1
Ist es Sinnvoll "Encoding.ASCII" zu verwenden? Was wenn dein Programm als UTF-8 übersetzt wird und solche Zeichenfolgen verarbeiten soll? "Encoding.Default" find ich besser.
Floyd 11.02.2011
Natürlich nicht. Vielen Dank für den Hinweis.
Mario Priebe 11.02.2011

Stelle deine .net-Frage jetzt!