Sfondo
Non hai mai ... davvero ... bisogno di conoscere la password dell'utente. Vuoi solo verificare che un utente in arrivo conosca la password di un account.
Hash It:
memorizza le password degli utenti con hash (crittografia unidirezionale) tramite una forte funzione hash. Una ricerca per "c # crittografare le password" fornisce un sacco di esempi.
Vedi il creatore di hash SHA1 online per avere un'idea di ciò che produce una funzione di hash (ma non usare SHA1 come funzione di hash, usa qualcosa di più forte come SHA256).
Ora, una password con hash significa che tu (e i ladri di database) non dovresti essere in grado di invertire tale hash nella password originale.
Come usarlo:
Ma, dici, come posso usare questa password schiacciata memorizzata nel database?
Quando l'utente accede, ti consegneranno il nome utente e la password (nel suo testo originale) Basta usare lo stesso codice hash per eseguire l'hashing della password digitata per ottenere la versione memorizzata.
Quindi, confronta le due password con hash (hash del database per nome utente e password digitata e con hash). Puoi stabilire se "ciò che hanno digitato" corrisponde "a ciò che l'utente originale ha inserito per la password" confrontando gli hash.
Credito extra:
Domanda: se avessi il tuo database, non potrei semplicemente prendere un cracker come John lo Squartatore e iniziare a fare hash fino a quando non trovo corrispondenze con le tue password memorizzate e con hash? (dato che gli utenti scelgono comunque parole brevi del dizionario ... dovrebbe essere facile)
Risposta: Sì ... sì, possono.
Quindi, dovresti "salare" le tue password. Vedi l' articolo di Wikipedia sul sale
Vedi l' esempio C # "Come eseguire il hash dei dati con salt"