MD5 z weryfikacją

MD5 z weryfikacją

Program: sprawdzający poprawność haszowania MD5.

Jak w opisie.

Kompilator: Microsoft Visual Studio

Galeria:

Program w akcji.

Kod programu:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;

namespace MD5_z_weryfikacją
{
    class Program
    {
        static void Main(string[] args)
        {
            string source = "ggg";
            using (MD5 md5Hash = MD5.Create())
            {
                string hash = GetMd5Hash(md5Hash, source);
                Console.WriteLine("Wynik haszowania MD5 tekstu " + source + " jest: " + hash);
                Console.WriteLine("Weryfikowanie...");
                if(VerifyMd5Hash(md5Hash,source,hash))
                    Console.WriteLine("Hasze są te same");
                else
                    Console.WriteLine("Hasze są te inne");
                Console.ReadKey();
            }
        }
        static string GetMd5Hash(MD5 md5Hash, string input)
        {
            byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
            StringBuilder sBuilder = new StringBuilder();
            for (int i = 0; i < data.Length; i++)
                sBuilder.Append(data[i].ToString("x2"));
            return sBuilder.ToString();
        }
        static bool VerifyMd5Hash(MD5 md5Hash, string input, string hash)
        {
            string hashOfInput = GetMd5Hash(md5Hash, input);
            StringComparer comparer = StringComparer.OrdinalIgnoreCase;
            if(0 == comparer.Compare(hashOfInput,hash))
                return true;
            else
                return false;
        }
    }
}

Słowniczek pojęć:

Algorytm z dziedziny kryptografii. Jest to popularna kryptograficzna funkcja skrótu, która z ciągu danych o dowolnej długości generuje 128-bitowy skrót.
Algorytm został opracowany przez Rona Rivesta (współtwórcę RSA) w 1991. W 2004 znaleziono sposób na generowanie kolizji MD5, co obniża jego bezpieczeństwo w niektórych zastosowaniach (np. podpisywaniu plików).
Z powodu znanych ataków kryptoanalitycznych funkcja MD5 zdecydowanie nie powinna być używana w zastosowaniach wymagających odporności na kolizje, na przykład w podpisie cyfrowym. W innych, takich jak HMAC, nadal może zapewniać satysfakcjonujący poziom bezpieczeństwa choć stosowanie jej w nowych rozwiązaniach nie jest zalecane.