Sto costruendo un'applicazione che ha bisogno di archiviare localmente dati sensibili, che viene crittografato usando SHA-256 di una password fornita dall'utente. Utilizza AES per la crittografia.
Sono preoccupato che alcuni utenti possano scegliere di utilizzare una password debole, che potrebbe essere forzata brutalmente da un utente malintenzionato che ottiene quel file e desidera leggere il contenuto.
Penso che, per ottenere l'hash, debba essere aggiunto un nonce a quella password, e il primo nonce per il quale l'hash ha i primi X bit impostati a zero, questa è la chiave che deve essere usata. Se X è impostato su 20, è necessario calcolare in media circa 1 milione di hash per ottenere la chiave valida dalla password fornita dall'utente.
In questo modo l'utente potrebbe impiegare 1 secondo per calcolare la chiave (a seconda della macchina), rendendo estremamente più difficile forzare la scrittura forzata indovinando le password.
Naturalmente, questo è qualcosa che mi è venuto in mente, e suppongo che sia perché non dovrei usarlo . Esistono alternative ampiamente testate per questo?