PDA

View Full Version : [C# 2.0]ricavare hash(MD5) da stringhe


RaouL_BennetH
21-06-2010, 14:03
Ciao a tutti :)

Ho a che fare con un form di login dove è necessario trattare la stringa presente nel campo "password" per calcolarne l'hash di tipo MD5.

La mia soluzione al momento è questa:


using System.Security.Cryptography;
//.....

string md5pwd = "";
MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
Byte[] pwdCharArray = Encoding.ASCII.GetBytes(txtPassword.Text);
pwdCharArray = provider.ComputeHash(pwdCharArray);

for(int count = 0; count < pwdCharArray.Length; i++)
{
md5pwd += pwdCharArray[i].ToString().ToLower();
}

//....


Vorrei sapere se posso considerarla una soluzione sufficiente o se ci sono modi più efficaci in merito.

Grazie mille a tutti :)

RaouL.

gugoXX
21-06-2010, 19:38
Ma il ciclo for a cosa ti serve?

RaouL_BennetH
21-06-2010, 22:11
Ma il ciclo for a cosa ti serve?

Ciao :)

Inizialmente non riuscivo a capire come confrontare il valore della textbox della password con il valore contenuto nel database che è md5.

Dovevo quindi confrontare :"raoul" con "2ffsb3b23bdaasdfffhlol"

Con gli esempi trovati neanche ne venivo a capo fin quando a "botta di message box" scorrendo tutto il contenuto di "pwdCharArray" ho pensato che una stringa non è altro che un array di char, e con il "for" me la compongo.

e adesso.... non avere pietà !

Kralizek
22-06-2010, 08:54
Dai un'occhiata qui (http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.hashpasswordforstoringinconfigfile.aspx)

L'esempio a fine pagina direi che fa proprio al caso tuo ;)

RaouL_BennetH
22-06-2010, 10:52
Dai un'occhiata qui (http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.hashpasswordforstoringinconfigfile.aspx)

L'esempio a fine pagina direi che fa proprio al caso tuo ;)

Ciao :)

Non so se sono capace di adattare quell'esempio anche per il mio caso.

Io mi trovo in un'applicazione windows forms + nhibernate. I valori di user e password da verificare non sono per l'accesso al database ma per altre azioni .

Io faccio questo tipo di verifica:



//recupero l'hash con il codice di sopra....

User user = helper.GetByUserAndPasswd(txtUser.Text, md5pwd);

//se non ne recupero nessuno l'utente o non esiste o sono stati inseriti dei dati sbagliati.

Kralizek
22-06-2010, 10:55
credo ti basti un


string hashedPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(clearPassword, "MD5");


controlla i namespace ma ad occhio dovrebbe bastarti un


using System.Web.Security;

RaouL_BennetH
22-06-2010, 11:19
Non finirò mai di stupirmi . E dire che ci ho perso diverso tempo :( quando con un'unica istruzione chiara .....

Grazie infinite per l'aiuto :)