Come ogni buona password che memorizza lo sviluppatore ho dei sali unici utente che uso per generare gli hash delle password. cioè memorizzo un uniquesalt
e SHA1(salt + password + "applicationuniquestring")
nel database per ogni utente.
Se qualcuno dovesse ottenere il mio database potrebbe teoricamente creare una tabella arcobaleno per ogni utente e averlo fino a quando non lo incrinano.
E se non avessi archiviato gli ultimi due caratteri dell'hash generato.
Con: Ciò renderebbe la possibilità che una password inserita erroneamente sia accettata più in alto (ma probabilmente non così alta che mi interessa davvero).
Pro: Sarebbe anche abbastanza noioso cercare di riavere la password, in quanto ciò che fai è che ci sono ((26 + 10) * (26 + 10)) = 1296
possibili conclusioni per l'hash che non conosci.
E se dovessi cercare di indovinare e forzare tutte le combinazioni e provare le diverse combinazioni ... beh, anche un servizio con un codice scadente dovrebbe segnalarti dopo circa 100 tentativi di accesso falliti ...
Ora questo potrebbe essere stupido per molte ragioni, ma non posso pensare a loro ora .. Ora per favore manda questa idea prima di implementarla.