Czasem zachodzi potrzeba wygenerowania hasha MD5, aby tego dokonać w środowisku .NET potrzebujemy napisać prostą metodę:
public static string genMD5(string input)
{
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
byte[] hashBytes = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("X2"));
}
return sb.ToString().ToLower();
}
tłumacząc kod od góry jest to publiczna metoda statyczna (można jej użyć bez instancjonowania klasy). Jako argument przyjmuje ona string który chcemy zakodować.
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
Tworzy nam obiekt md5, który odpowiada za generowanie hashy (skrótów).
System.Security.Cryptography
jest namespacem, którego użyłem by nie było problemu z usingami, można też to dodać na samej górze i wtedy stworzenie obiektu będzie wyglądało tak:
MD5 md5 = MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
Zamienia nasz napis na tablicę bajtów, które zostaną użyte to skalkulowania hasha.
byte[] hashBytes = md5.ComputeHash(inputBytes);
Powyższa linia tworzy tablicę bajtów w której znajduje się 16 elementów (Md5 zwraca hashe o długości 128bitów).
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
sb.Append(hashBytes[i].ToString("X2"));
}
Na koniec możemy zamienić nasz hash na napis zawierający 32znaki (liczba w zapisie 16stkowym).