2013-01-22 20 views
5

Ho il seguente codice che crea un hash da una password e quindi lo confronta con una password hash memorizzata nel db. Tutto funziona bene su http. Questa per un'applicazione ASP.NET WebForms esecuzione in C# 4,0HMACSHA1 SSL issue

HMACSHA1 hash = new HMACSHA1(); 
hash.Key = Encoding.Unicode.GetBytes(password); 
encodedPassword = Convert.ToBase64String(hash.ComputeHash(Encoding.Unicode.GetBytes(password))); 

Tuttavia quando in esecuzione su https/ssl la password codificata è diverso e quindi l'utente non può effettuare il login.

Il framework .net fa qualcosa di diverso quando si compila l'hash quando si passa attraverso SSL?

Se passo il codice e copio la password codificata e aggiorno il mio db su SSL posso accedere.

Qualche idea?

Molte grazie

+1

Il protocollo SSL è trasparente per asp.net, non capisco dove e come le password viaggiano da client a server e dove viene eseguito il confronto. – Aristos

+2

Perché usi un HMAC e poi passi come chiave e dati-da-hash con la password? Non ha alcun senso. – Robert

+1

robert, non il mio codice fa parte di opensource cms umbraco. sto solo provando a risolvere un problema che ho scoperto e sembra che oltre la https la codifica sia diversa quando su http forse qualcosa sta succedendo nelle profondità del framework .net? – Ismail

risposta

1

Si prega di provare a impostare le impostazioni della globalizzazione come specificato nell'articolo MSDN all'indirizzo http://msdn.microsoft.com/en-CA/library/39d1w2xf%28v=vs.100%29.aspx

Questo farà in modo che il hash.key è uniforme in tutta l'applicazione, che a sua volta, farà in modo che l'hash calcolato è identico ogni volta che viene calcolato con una chiave.