2013-01-22 31 views
5

Tôi có đoạn mã sau tạo mã băm từ mật khẩu và sau đó so sánh nó với mật khẩu băm được lưu trữ trong db. Tất cả các công trình tốt hơn http. Điều này cho một ứng dụng web asp.net chạy dưới C# 4.0HMACSHA1 Vấn đề SSL

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

Tuy nhiên khi chạy trên https/ssl mật khẩu được mã hóa khác và do đó người dùng không thể đăng nhập.

Khuôn khổ .net có thực hiện điều gì khác khi tính toán băm khi chuyển qua SSL không?

Nếu tôi duyệt qua mã và sao chép mật khẩu được mã hóa và cập nhật db của tôi sau đó qua SSL, tôi có thể đăng nhập.

Bất kỳ ý tưởng nào?

Rất cám ơn

+1

SSL là minh bạch đối với asp.net, tôi không hiểu vị trí và cách thức mật khẩu di chuyển từ máy khách đến máy chủ và nơi thực hiện so sánh. – Aristos

+2

Tại sao bạn sử dụng HMAC và sau đó chuyển mật khẩu và mật khẩu để bẻ khóa? Điều đó không có ý nghĩa gì cả. – Robert

+1

robert, không phải mã của tôi là một phần của cmswaco mã nguồn mở. chỉ cố gắng sửa chữa một vấn đề mà tôi đã phát hiện ra và có vẻ như là trên https mã hóa là khác nhau khi trên http có thể một cái gì đó đang xảy ra ở độ sâu của khuôn khổ .net? – Ismail

Trả lời

1

Vui lòng thử thiết lập các thiết lập toàn cầu hoá theo quy định tại Điều MSDN tại http://msdn.microsoft.com/en-CA/library/39d1w2xf%28v=vs.100%29.aspx

Điều này sẽ đảm bảo rằng các hash.key đồng đều trên các ứng dụng của bạn mà đến lượt nó, sẽ đảm bảo rằng các hash tính là giống nhau mỗi khi nó được tính bằng một khóa.