Attualmente sto cercando di aggiornare un progetto di miniera da NET 3.5 a .NET 4.0SHA1CryptoServiceProvider cambiato in .NET 4
Tutto stava andando molto bene, tutto il codice compilato, tutti i test passati.
Quindi ho riscontrato un problema durante la distribuzione nel mio ambiente di gestione temporanea.
All'improvviso i miei accessi non funzionavano più.
Sembra miei SHA1 hash delle password vengono hash in modo diverso in .NET 4.
sto usando la SHA1CryptoServiceProvider:
SHA1CryptoServiceProvidercryptoTransformSHA1 = new SHA1CryptoServiceProvider();
Per testare Ho creato un nuovo progetto di Visual Studio con 2 applicazioni console.
Il primo destinato a .NET Framework 3.5 e il secondo a 4.0.
Ho eseguito esattamente lo stesso codice di hashing in entrambi e sono stati prodotti risultati diversi.
Perché sta succedendo e come posso risolvere questo problema?
Ovviamente non posso aggiornare tutte le password dei miei utenti considerando che non so cosa siano.
Qualsiasi aiuto sarebbe molto apprezzato.
CODICE ESEMPIO
public static class SHA1Hash
{
public static string Hash(string stringToHash)
{
return (Hash(stringToHash, Encoding.Default));
}
public static string Hash(string stringToHash, Encoding enc)
{
byte[] buffer = enc.GetBytes(stringToHash + stringToHash.Reverse());
var cryptoTransformSHA1 = new SHA1CryptoServiceProvider();
string hash = BitConverter.ToString(cryptoTransformSHA1.ComputeHash(buffer));
return hash;
}
}
possibile duplicato del [Accesso non riesce dopo l'aggiornamento ad ASP.net 4.0 da 3.5] (http://stackoverflow.com/questions/2739196/login -fails-after-upgrade-to-asp-net-4-0-from-3-5) - soluzione inclusa –
sfortunatamente non è lo stesso. Si tratta di FormsAuthenticationCookies e ViewState ed è solo un problema "se si esegue misto ASP.NET 2.0/ASP.NET 4". Ma DANG ho pensato che fosse la mia soluzione – WebDude
Puoi chiarire la confusione di AsymetricHash/Hash? Giusto per essere al sicuro. –