Supponiamo che mi piacerebbe usare una stringa molto lunga come password. Ad esempio possiamo solo dire che questa stringa ha una lunghezza di 100 caratteri.
Tuttavia, supponiamo che l'applicazione per la quale vorrei utilizzare questa password supporti solo una lunghezza della password di 64 caratteri. Senza entrare nei dettagli, supponiamo che il semplice troncamento della password desiderata a 64 caratteri aumenterebbe in modo significativo la sua prevedibilità.
Sarebbe sicuro se usassi come password un hash di questa password, al solo scopo di ridurne la lunghezza?
Ad esempio, se scelgo di utilizzare un hash SHA-256 codificato in base64 della password, credo che sto cercando uno spazio di ricerca di circa 2.96 * 10 79 ( 64 possibili caratteri * lunghezza di 44). Ho scelto di usare base64 invece della rappresentazione esadecimale perché la rappresentazione esadecimale consiste in uno spazio di ricerca più piccolo (16 possibili caratteri * lunghezza di 64 = 1.16 * 10 77 ).
( EDIT: come indicato da Thomas Pornin nella sua risposta, lo spazio di ricerca sarà sempre 2 256 indipendentemente da quale codifica venga utilizzata.)
Per i miei scopi, questa dimensione dello spazio di ricerca è sufficiente. Tuttavia, il fatto che io stia usando una codifica base64 di un hash SHA-256 introduce qualsiasi prevedibilità della password? In altre parole, se un utente malintenzionato sa che la mia password è un hash SHA-256 codificato in base64 di una stringa di input (ma non sa nulla della stringa di input), sarebbe in grado di ridurre lo spazio di ricerca iniziale di 2.96 * 10 79