Szyfrowanie to proces kodowania wiadomości w postaci zwykłego tekstu na nieczytelny zaszyfrowany tekst przy użyciu algorytmów. Istnieją dwa typy schematów szyfrowania: (1) klucz symetryczny i (2) klucz publiczny. Jednak nie jest to całkowicie bezpieczne; istnieją metody odszyfrowania zaszyfrowanego tekstu w zależności od znajomości klucza, czasu i środków pieniężnych. Funkcja skrótu to algorytm szyfrowania, który konwertuje wiadomości z dowolnymi danymi na komunikaty o stałym rozmiarze, zwane skrótami wiadomości lub wartościami skrótu. Idealna kryptograficzna funkcja skrótu ma trzy podstawowe właściwości: (1) musi być w stanie łatwo przekonwertować informacje cyfrowe na wartość skrótu o stałej długości; (2) musi być niemożliwe obliczeniowo wyprowadzenie jakichkolwiek informacji o wiadomości wejściowej z samego skrótu lub skrótu wiadomości; i (3) musi być niemożliwe obliczeniowo, aby znaleźć dwa pliki, które mają ten sam skrót. Funkcje skrótu muszą być odporne na ataki kryptoanalityczne, więc muszą mieć takie właściwości, jak odporność na przedobraz, odporność na drugi obraz przed obrazem i odporność na kolizje. Sposobami na osiągnięcie tego jest użycie jednokierunkowej funkcji skrótu. Najczęściej używanymi algorytmami wyznaczania wartości skrótu są algorytm skrótu wiadomości 5 (MD5) i bezpieczny algorytm wyznaczania wartości skrótu 1 (SHA-1). Stworzenie MD5 przypisuje się kryptologowi Ronowi Rivestowi, który uważał, że jest to bezpieczniejsza alternatywa dla swojego poprzednika MD4, który po raz pierwszy wszedł do użytku w 1992 roku. Algorytm polega na rozbiciu zwykłego pliku tekstowego na oddzielne 512-bitowe bloki; bloki te są następnie używane jako dane wejściowe dla algorytmu, który zwraca 128-bitową wartość skrótu, która jest unikalna dla tego pliku . SHA-1 to zbiór algorytmów mieszających opracowany przez Narodowy Instytut Standardów i Technologii (NIST) Ostatnio nastąpił znaczący postęp w zrozumieniu funkcji skrótu; Z przeprowadzonych badań wynika, że żaden z obecnie stosowanych algorytmów nie jest w 100% bezpieczny. Jednak w wielu przypadkach nie jest możliwe odwrócenie tych algorytmów w procesie, który jest często niezwykle kosztowny i czasochłonny . Dotyczy to zarówno MD5, jak i SHA-1, które są szeroko stosowane. Te algorytmy są podatne na ataki znane jako ataki kolizyjne, ataki przedobrazowe i ataki na drugi obraz. Inne znaczące ataki obejmują tęczowe tablice, ataki siłowe i atak urodzinowy, który opiera się na teorii paradoksu urodzin. Grupa naukowców kierowana przez dr Wang opublikowała artykuł w 2004 roku, opisując szczegółowo przeprowadzone przez siebie badania, które doprowadziły do stworzenia tego samego skrótu wiadomości przy użyciu dwóch różnych skrótów. Jest to sprzeczne z jedną z podstaw haszowania, która mówi, że powinno być niewykonalne aby znaleźć dwa pliki z tym samym hashem. Udało się to osiągnąć średnio w 1 godzinę. Teoretycznie naukowcy ci złamali MD5 [63]. Wielu naukowców próbuje wykorzystać prace dr. Wanga, znajdując sposoby na skrócenie czasu potrzebnego na zaatakowanie MD5 i SHA-1 przy użyciu różnych technik algebraicznych. Prowadzi to do przekonania, że MD5 i SHA-1 nie są już bezpieczne, mimo że są szeroko stosowane w przemyśle. Aby poprawić bezpieczeństwo funkcji skrótu, opracowywane są nowe algorytmy. SHA-2 został po raz pierwszy opublikowany w 2001 roku; ma cztery funkcje skrótu z skrótami o długości 224, 256, 384 i 512 bitów. Jednak nie jest to idealne, w 2008 roku opracowano ataki, które pokonały odporność na przedobrazy SHA-2. To jest również teraz można użyć ataków kolizyjnych w celu pokonania pierwszych 24 z 64 kroków SHA-256 i 46 z 80 kroków dla SHA-512 [65]. Jednak nigdy nie było udanego ataku na SHA-2. Nie jest tak szeroko stosowany jak SHA-1, nawet jeśli jest bezpieczniejszy, a może to wynikać z braku wsparcia w systemie Microsoft Windows lub braku pilnej potrzeby wdrożenia SHA-2. Ten brak pilności można przypisać faktowi że ataki SHA-1 są bardzo czasochłonne w realizacji, a co za tym idzie, nie jest to powszechnie stosowana metoda łamania haseł lub przechwytywania wrażliwych danych. Opracowano kolejny następcę w rodzinie SHA, ale obecnie jest on nadal testowany i jest zbyt nowy, aby można go było używać w poważnych zastosowaniach związanych z bezpieczeństwem