Dal punto di vista della sicurezza delle informazioni, dovresti considerare il tuo schema pubblico, come per principio di Kerchkoff , ancora di più da quando hai rivelato il tuo codice sorgente. In questo modo la sicurezza della password generata viene ridotta alla sicurezza del loro input. L'algoritmo scelto è irrilevante in quanto un utente malintenzionato sceglie l'input e utilizza l'algoritmo per generare la password.
Quindi valutiamo la sicurezza dei tuoi input:
- Password principale: se viene rilevata da un utente malintenzionato, tutte le password vengono compromesse. Non riutilizzare le tue password.
- Nome del sito: è di dominio pubblico, non aumenta la sicurezza.
- Lunghezza della password: contiene pochissima entropia. È quasi inutile.
- Caratteri disponibili: suppongo che tu usi sempre gli stessi o usi tutti i caratteri consentiti dal sito, poiché altrimenti sarebbe molto scomodo. Quindi è equivalente a una seconda piccola password principale.
Quindi, fondamentalmente il tuo schema ha hash informazioni pubbliche con una password principale. Un utente malintenzionato deve solo forzare bruscamente una delle password generate per recuperare la password principale e quindi trovare facilmente le altre password generate.
Una soluzione migliore sarebbe generare casualmente le tue password. In questo modo, non possono perdere informazioni sugli altri. Potresti quindi salvarli in un file o database crittografato. Dovresti solo ricordare la password principale del database crittografato, senza dover ricordare la lunghezza della password o come è stato chiamato il sito Web prima che cambiassero nome. I gestori di password ti consentono di fare proprio questo.