C'è sempre una possibilità di duplicazione ma la maggior parte delle volte la possibilità è abbastanza bassa (ma più alta di quanto pensassi, guarda il "paradosso" del compleanno)
L'hashing due volte non fornisce enormi quantità di sicurezza extra, è la sicurezza dell'hash 1 + sicurezza dell'hash 2.
Per aumentare la sicurezza degli hash delle password dovresti saltarli, questo è dare a ogni password una stringa casuale individuale da aggiungere alla password ogni volta che viene eseguito l'hashing, questo rimuoverà la minaccia di una tabella precalcolata (tabella arcobaleno ) rivelando le password.
Come menzionato nel podcast della sicurezza ora, non c'è niente di sbagliato nelle password di hashing più volte, in realtà è incoraggiato perché se vuoi cambiare l'hash con cui le tue password sono criptate, non devi aspettare che la password sia inserito di nuovo per cancellarlo con il nuovo hash, puoi cancellare tutti i vecchi hash con il nuovo hash. Questo dà a tutti la sicurezza del nuovo hash immediatamente.
Vorrei anche sottolineare che MD5 e SHA-2 sono funzioni hash scadenti per le password. Le funzioni hash della password dovrebbero essere "lente" e MD5 è stato progettato per essere veloce (non so SHA-2), dovresti usare funzioni come Argon2, bcrypt, scrypt o PBKDF2 che sono davvero difficili da velocizzare.