V češtině označována i jako Hašovací funkce je speciální druh jednosměrného šifrovacího algoritmu. Hashovací funkce zpracovávájí řetězce/soubory a vytvářejí z nich tzv. otisk (Hash). Hashovací funkce se využívají ve spoustě odvětvích informačních technologii (ukládání hesel, digitální podpis, kryptoměny...). [1]
Každá hashovací funcke by měla splňovat následující vlastnosti [1; 2]
Při ukládání hesel do databáze by bylo nerozumné ukládat je v podobě běžného snadno šitelného textu. Takto uložená hesla by byla velmi náchylná na odhalení a stejně tak by k nim měli přístup i lidé, kteří by se o databázi starali. Proto se k ukládání hesel využívá hashovacích funkcí.
Hesla jsou v databázích ukládána jako otisk z vhodně zvolené hashovací funkce. Není tedy možné snadno odhalit uložené heslo. Hesla jsou ukládána například takto: 79c2b46ce2594ecbcb5b73e9
Standardním útokem na takto ukládána hesla je využití rainbow table (v češtině duhová tabulka), což je vlastně obdoba slovníkového útoku. Místo zkoušení standardních hesel nebo jejich variací, jsou porovnávány jejich otisky (za předpokladu, že útočník ví, která hashovací funkce byla použita)
Pro tyto případy e další vrstvou zabezpečení využití kryptografické soli. Ke každému heslu se před hashováním přidá ještě unikátní řetězec (například přihlašovací jméno, datum registrace a jiné). Otisky takto upravených hesel pak neodpovídájí položkám v duhové tabulce. Útočník by musel mít znalost o tom, jaká kryptografická sůl se v konkrétní databázi používá. [1]
https://www.youtube.com/watch?v=b4b8ktEV4Bg
https://www.youtube.com/watch?v=8ZtInClXe1Q