MD5 per le password
L'utilizzo di md5 salato per le password è una cattiva idea. Non a causa delle debolezze crittografiche di MD5, ma perché è veloce. Ciò significa che un utente malintenzionato può provare miliardi di password candidate al secondo su una singola GPU.
Quello che dovresti usare sono costruzioni di hash deliberatamente lente, come scrypt, bcrypt e PBKDF2. Semplice SHA-2 salato non è abbastanza buono perché, come la maggior parte degli hash di uso generale, è veloce. Consulta Come fare in modo sicuro le password di hash? per i dettagli su cosa dovresti usare.
MD5 per l'integrità del file
L'uso di MD5 per l'integrità dei file può essere o meno un problema pratico, a seconda dello scenario di utilizzo esatto.
Gli attacchi contro MD5 sono attacchi di collisione, non di attacchi pre-immagine. Ciò significa che un utente malintenzionato può produrre due file con lo stesso hash, se ha il controllo su entrambi. Ma non può eguagliare l'hash di un file esistente che non ha influenzato.
Non so se gli attacchi si applicano alla tua applicazione, ma personalmente inizierei a migrare anche se pensi che non sia così. È fin troppo facile trascurare qualcosa. Meglio prevenire che curare.
La migliore soluzione in questo contesto è SHA-2 (SHA-256) per ora. Una volta che lo standard SHA-3 sarà standardizzato, sarà anche una buona scelta.