Sto creando un servizio di autenticazione, quindi ho cercato alcune buone implementazioni Java / Groovy di hashing password + salt. Ho trovato questo articolo su crackstation con un esempio di codice e ho deciso di renderlo mio. La prima cosa che ho notato è SHA1 e solo 1000 iterazioni, quindi le ho cambiate in SHA256 e 90510 (devo ancora testare le prestazioni sul server e magari aumentarlo ad almeno 100k).
Una cosa comunque mi ha colpito. La stringa risultante è "[iterazioni]: [sale come esagono]: [hash come esadecimale]". Perché le iterazioni vengono aggiunte al risultato? Non sarebbe insicuro? Non sarebbe come dare via un pezzo della chiave? O sono solo troppo paranoico.
L'ho rimosso, ma mi chiedo perché è lì? Qual è lo scopo di dimostrarlo? Nel caso in cui il numero predefinito di iterazioni cambi? Il numero di iterazioni dovrebbe essere randomizzato in una laurea?