Per aggiungere alcune informazioni sulla buona risposta di @ CodesInChaos:
Usare diversi hash simultaneamente è stato suggerito come un modo per far fronte alle future debolezze delle funzioni hash. Ad esempio, hai hash con MD5 e con SHA-1, in modo che il tuo sistema rimanga solido anche se uno di essi si rompe (a prescindere da quale sia rotto). Questo equivale a definire una nuova funzione di hash (chiamiamola SHAMD-51) che offre come output la concatenazione di ciò che SHA-1 e MD5, rispettivamente, produrrebbero sui dati di input.
È facile vedere che la concatenazione ti darà una funzione che sarà almeno resistente alla collisione come la più strong delle due. Sfortunatamente, la resistenza alle pre-immagini sarà più vicina a quella delle più deboli delle due funzioni. In generale, la concatenazione non è un buon modo per costruire funzioni hash: non vale la pena spendere i tuoi soldi, cioè non tanto la sicurezza che potresti pretendere, dato il tuo sforzo di elaborazione e la dimensione dell'output con cui devi fare i conti. Vedi questa risposta per qualche altro analisi e puntatori.
Offrire la scelta tra diverse funzioni di hash è molto meglio, poiché ti consente di selezionarne una che corrisponda alla tua architettura, per prestazioni migliori. Nota che l'hashing tende ad essere comunque veloce; quando esegui l'hashing di file dal disco o dati dalla rete, la funzione di hash è raramente il collo di bottiglia. Per quanto riguarda tutti i problemi di prestazioni, la prima cosa da fare è misurare : non ci sono problemi di prestazioni a meno che uno non sia stato rilevato e quantificato in modo affidabile.
La scelta della funzione di hash è anche chiara quando devi rispettare regole inflessibili (che potrebbero imporre l'uso di una funzione "Approvato", con una lettera maiuscola).
In pratica, molti sistemi in cui più funzioni hash possono essere utilizzate insieme lo fanno a causa di alcune convinzioni irrazionali che la crittografia è come il ranch che può rendere commestibile il peggior roadkill purché ne aggiunga abbastanza.
Nota: non esiste alcuna prova matematica che una determinata funzione di hash sia sicura. In realtà, non c'è prova matematica che possa esistere una cosa come una funzione di hash sicura. Il meglio che abbiamo sono le funzioni di hash che sono state utilizzate "in the wild" per molto tempo e sono sopravvissute agli assalti sfrenati di orde di crittografi infuriati. Le funzioni SHA-2 (SHA-256, SHA-512) sono tali funzioni.