53 messaggi dal 26 luglio 2004
praticamente ho un database dove le password vengono memorizzate dopo aver applicato l'hash md5.

Ora da una pagina aspx vorrei effettuare una query per verificare la corrispondenza tra la password che inserisce l'utente in una textbox e quelle memorizzate del database.
Devo fare quindi qualcosa del tipo:
cmd = New MySqlCommand("SELECT * FROM tabella WHERE password=" & txtPassword)

che elaborazione devo fare a txtPassword considerando contiene il valore della password inserita in chiaro dall'utente in modo che sia confrontabile con quella criptata che c'è memorizzata nel database?
Allora la cosa io l'ho sviluppata così

questa funzione mi restituisce un array di byte

internal byte[] EncryptPassword(string password)
{
UnicodeEncoding encoding = new UnicodeEncoding();
byte[] hashBytes = encoding.GetBytes(password);


MD5 md5 = new MD5CryptoServiceProvider();
byte[] cryptPassword = md5 .ComputeHash(hashBytes);

return cryptPassword;
}

occhio non l'ho testata io lo faccio con SHA1, ma sono abbastanza sicuro che sia la stessa cosa

nel db ho la password criptata in un campo binary, alla query gli passo un parametro di tipo binary contenente la password inserita dall'utente criptata tramite la funzione sopra.
Quindi nel db ho una query tipo la seguente

SELECT COUNT(*) FROM [Users] WHERE [Username] = @username AND [Password] = @password

ovviamente sia il campo che il parametro devo essere binary e passati per la funzione che ti ho scritto sopra.

In sql funziona, credo si lo stesso per mysql.
In caso lavori con collection e la validazione la fai da disconnesso perchè hai le voci in cache per esempio devi cilcarti una delle due array per poter fare la verifica.

spero di essermi spiegato.


byez

imperugo
Microsoft MVP
myblog : http://www.tostring.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.