Le funzioni hash crittografiche sono oggetti che cercano di soddisfare alcune proprietà (vale a dire, resistenza alle collisioni, preimmagini e seconde preimmagini) . Un algoritmo che fallisce nell'offrire queste proprietà è detto "rotto" e, per definizione, non dovrebbe essere usato in protocolli in cui sono necessarie le proprietà non soddisfatte.
MD5 è rotto (per collisioni). SHA-1 non è (almeno, non tanto). Se il protocollo richiede resistenza alle collisioni, non utilizzare MD5. Per esempio. alcuni ricercatori sono riusciti a creare certificati falsi usando la mancanza di resistenza MD5 contro le collisioni.
In questo momento, SHA-1 è "leggermente indebolito" per quanto riguarda le collisioni, ma non sufficientemente da produrre una collisione effettiva. Ci vorrebbe una notevole quantità di tempo e computer (mesi, migliaia), quindi un bel po 'di soldi. A contrario , le collisioni MD5 possono essere generate in meno di un secondo su un PC di base.
SHA-1 è leggermente più lento di MD5 quando elabora i dati di massa, che non importa quanto di solito si crede. Quando un PC di base (di nuovo) esegue il hashing di file di grandi dimensioni, la parte di hashing è in realtà tre volte più veloce rispetto alla parte di lettura da disco quando si utilizza SHA-1. Quel MD5 è circa il 40% più veloce di SHA-1 in realtà non importa, dal momento che il collo di bottiglia è il disco, non l'hashing.
SHA-256 e SHA-512 sono le funzioni hash generiche attualmente raccomandate. Sono più lenti di SHA-1, ma comunque "abbastanza veloci" per la maggior parte degli scopi. Non hanno note debolezze (anche carenze teoriche).