Una chiave a 128 bit per AES deve essere lunga solo 128 bit. Nessun'altra proprietà è richiesta , anche se altre proprietà potrebbero essere desiderate .
Se scegli una stringa di 16 caratteri, non utilizzerai davvero quei 128 bit al massimo. ASCII supporta solo 7 bit per carattere (il primo bit di ciascun byte è sempre zero) e l'entropia del mondo reale supera di circa 6 bit per carattere di testo ASCII. Quindi una password di 16 caratteri se utilizzata direttamente per AES a 128 bit ha lo stesso livello di sicurezza di una chiave a 96 bit, piuttosto che di una chiave a 128 bit.
Per una chiave di crittografia, si desidera utilizzare quei bit preziosi al loro meglio; vuoi che ogni bit sia ugualmente inconcepibile.
Il modo migliore per farlo è usare un hash. La cosa bella dell'utilizzo di un hash è che la tua password non deve essere esattamente 16 caratteri; può essere più breve o più lungo, e nella tua chiave risultante avrai ancora una distribuzione casuale dei bit.
MD5 produrrà un output a 128 bit, quindi è conveniente. Ma in realtà MD5 è piuttosto rotto e il tuo output hash non ha bisogno di esattamente della stessa dimensione della tua chiave, deve solo essere almeno altrettanto grande come chiave. Potresti anche usare SHA-256 e poi prendere i primi 128 bit di output hash per la tua chiave. O gli ultimi 128 bit. O il medio 128 bit. Finché sei coerente, non importa.
Che, a patto che non importi, che ne dici di eseguire l'hash più volte. In questo modo un utente malintenzionato dovrà eseguire l'hash più volte per ogni ipotesi se vuole indovinare la nostra password.
In realtà, qualcuno ci ha già pensato, e c'è una lista di "Funzioni di derivazione chiave" progettate specificamente per prendere un input arbitrario di qualsiasi tipo e dimensione e produrre una chiave di almeno X bit di lunghezza, spesso con la proprietà aggiunta che derivare la chiave dalla password richiede molto tempo (e forse un sacco di memoria).
Questi sono stati discussi abbastanza estesamente qui, quindi cerca semplicemente PBKDF2 o scrypt per maggiori dettagli.
Quindi, per riassumere, la risposta è sì funziona , ma no non dovresti farlo perché ci sono opzioni migliori pronte che rendono il tuo tasti migliori in ogni modo .