Tôi hiện đang cố gắng để nâng cấp một dự án của tôi từ .NET 3.5 để NET 4.0SHA1CryptoServiceProvider thay đổi trong .NET 4
Mọi thứ đã diễn ra rất tốt, tất cả các mã biên soạn, tất cả các xét nghiệm thông qua.
Sau đó, tôi đã gặp sự cố khi triển khai môi trường dàn dựng của mình.
Đột nhiên, thông tin đăng nhập của tôi không còn hoạt động nữa.
Dường như SHA1 băm mật khẩu của tôi đang bị băm khác nhau trong .NET 4.
Tôi đang sử dụng SHA1CryptoServiceProvider:
SHA1CryptoServiceProvidercryptoTransformSHA1 = new SHA1CryptoServiceProvider();
Để kiểm tra tôi đã tạo một dự án Visual Studio mới với 2 giao diện điều khiển các ứng dụng.
Nhắm mục tiêu đầu tiên tại .NET Framework 3.5 và phiên bản thứ hai ở mức 4.0.
Tôi chạy chính xác cùng một mã băm trong cả hai và các kết quả khác nhau được tạo ra.
Tại sao điều này xảy ra và làm cách nào để khắc phục sự cố này?
Tôi rõ ràng không thể cập nhật tất cả mật khẩu người dùng của mình vì tôi không biết chúng là gì.
Mọi trợ giúp sẽ được đánh giá cao.
MÃ MẪU
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;
}
}
thể trùng lặp của [Đăng nhập thất bại sau khi nâng cấp lên ASP.net 4.0 từ 3,5] (http://stackoverflow.com/questions/2739196/login -fails-after-upgrade-to-asp-net-4-0-from-3-5) - giải pháp bao gồm –
tiếc là đây không phải là trường hợp tương tự. Điều này liên quan đến FormsAuthenticationCookies và ViewState và chỉ là một vấn đề "nếu bạn chạy hỗn hợp ASP.NET 2.0/ASP.NET 4". Nhưng DANG tôi nghĩ đó là giải pháp của tôi – WebDude
Bạn có thể xóa nhầm lẫn AsymetricHash/Hash không? Chỉ để được an toàn. –