改變我目前正在和我的一個項目升級從.NET 3.5到.NET 4.0SHA1CryptoServiceProvider在.NET 4
一切都進行得非常好,所有的代碼編譯,所有的測試通過。
然後我遇到了部署到我的臨時環境的問題。
突然我的登錄不再有效。
看來我的SHA1哈希密碼被散列在不同的.NET 4
我使用SHA1CryptoServiceProvider:
SHA1CryptoServiceProvidercryptoTransformSHA1 = new SHA1CryptoServiceProvider();
爲了測試我創建了一個新的Visual Studio項目,2個控制檯應用程序。
第一個針對.NET Framework 3.5,第二個針對.NET 4.0。
我在兩者中運行完全相同的哈希代碼,生成不同的結果。
爲什麼會發生這種情況,我該如何解決這個問題?
我顯然不能去更新我的所有用戶的密碼的考慮,我不知道它們是什麼。
任何幫助將不勝感激。
代碼示例
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;
}
}
的[升級後,登錄失敗ASP.net 4.0 3.5(可能重複http://stackoverflow.com/questions/2739196/login -fails-after-upgrade-asp-net-4-0-from-3-5) - 解決方案包括 – 2010-05-31 20:49:25
不幸的是,這不是一回事。這與FormsAuthenticationCookies和ViewState有關,只是「如果運行混合ASP.NET 2.0/ASP.NET 4」時出現問題。 但是我認爲這是我的解決方案 – WebDude 2010-05-31 21:03:12
你能清理AsymetricHash/Hash混淆嗎?只是爲了安全。 – 2010-05-31 21:11:20