md5 i .net (C#)

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

Leave a Reply

Your email address will not be published. Required fields are marked *

twenty + 6 =