Sto creando un programma (in C ++) che proteggerà con password il file del database dell'utente (.dat). Sono confuso su dove memorizzare la password? Nel file di database dell'utente o altrove.
Sono nuovo di questo concetto. Non so dove un programma dovrebbe memorizzare la password con hash. Ci ho pensato da molto tempo.
Anch'io ho una domanda. Se un programma memorizza la password hash nel file di database (insieme ai dati degli utenti) è possibile che un utente malintenzionato modifichi l'hash all'interno del file con un hash comune come l'hash del testo 'password' in modo che la password diventi 'password' ?
Modifica: Ok! Ho in qualche modo capito il concetto di memorizzazione della password. Questo è quello che ho capito:
Get the password from the user
Hash it (I will use SHA-512)
Store the hash in the database file
Done
Probabilmente, non ho capito il concetto di hash simmetrico. Per favore, spiegami in modo semplice. E la domanda che ho è ... lo spiegherò meglio con un esempio.
Supponiamo che questo sia il contenuto del file dell'utente
thisismydatabasefile
L'utente decide di aggiungere una password. Digita la password e l'abbiamo cancellata. L'hash generato è somerandomhash. Cifriamo il file con somerandomhash poiché la password e l'hash sono inclusi nel file crittografato. Quindi ora il contenuto del file è
encryptedfilesomerandomhash
Immagina che l'hacker abbia ottenuto il file di database crittografato. Sa che l'hash della password è "somerandomhash". Ora modifica l'hash della password 'somerandomhash' a qualcosa di comune come 'somehashthatheknows'. Quindi, qual è il modo migliore per memorizzare una password.
Per facilità, in che modo programmi come zip, 7z, rar etc memorizzano le password all'interno di un file di archivio?