Sada funkcí SHA-3 představuje zatím nejnovější kryptografický standard pro hash funkce od americké NIST z roku 2015. Jedná se o typově nový typ funkcí, které vycházejí z jiného základu, než funkce předchozí (postaveny na MD5). Dle standardů SHA-3 zatím nenahrazuje předchozí verzi SHA-2, která je stále pokládána za bezpečnou, pouze se doporučuje pro využívání u nových aplikací.
Algoritmus SHA-3 je na rozdíl od svých předchůdců (vycházejících z MD5) postaven na zcela jiném kryptosystému zvaném Keccak (konkrétně dřívější hash funkci PANAMA a RadioGatún). Metody této rodiny mají charakteristickou tzv. houbovou konstrukci (sponge construction).
Funkce exp na schématu značí expansi zprávy na vhodnou velikost. Vstupní bloky r a c mají tento význam: r je část vstupu, která se mění při průchodu funkcí f (z anglického read/rate), naopak c je část vstupu, která je invariantní vůči průchodu f (z anglického capacity). Část vstupu c určuje bezpečnost schématu, nejbezpečnější je, pokud představuje polovinu vstupu.
Algoritmus je krok po kroku popsán níže. Uvažujeme vstup jako řetězec délky N, dále máme funkci expandující výstup (anglicky padding function) exp; permutační funkci f operující na bloku bitů velikosti b; definovanou velikost výstupu d; nakonec parametry r a c = b - r a houbovou konstrukci generující výstup Z:
Expanduje se vstup o velikosti N pomocí příslušné funkce, výstupem jsou bloky P expandovaného vstupu o velikosti dělitelné číslem r (kde n = velikost(P)/r).
Rozdělí se P do n po sobě jdoucích r-bitových částí P0, P1, ..., Pn-1
Inicializuje se stavová proměnná S na hodnotu 0 (samé nulové bity).
Absorbční fáze: pro každý blok Pi vykonej:
Rozšiř Pi na konci o řetězec c nulových bitů; výstupem je jeden blok velikosti b
Na tento výstup proveď operaci XOR s blokem S a proveď permutační operaci f na výsledek za vzniku nového stavu S.
"Ždímací fáze": Inicializuje se Z na prázdný řetězec. Dokud je velikost Z menší než d bitů prováděj:
Přidej prvních r bitů S do Z.
Pokud je Z stále menší než d bitů proveď operaci f na S za vzniku nového stavu S. Dále opakuj předchozí krok.
Ořízni Z na d bitový blok. Nyní představuje Z hledanou hash hodnotu.