2010-10-26 59 views
5

Tôi muốn triển khai chức năng quên mật khẩu cho trang web của mình. Tôi băm mật khẩu bằng cách sử dụng sha1. Làm cách nào để tôi khôi phục điều này cho người dùng?Khôi phục mật khẩu bằng mật khẩu sha1 băm

Phương pháp tốt nhất để thực hiện điều này là gì?

+1

dupe: http://stackoverflow.com/questions/3615408/php-dehashing-the-password trong số những người khác – Anon

+0

bản sao có thể có của [PHP: Cách gửi mật khẩu ban đầu cho người dùng khi anh ấy nhấp vào quên mật khẩu đã được mã hóa bằng cách sử dụng md5?] (http://stackoverflow.com/questions/2780198/phphow-to-send-the-original-password-to-the-user-when-he-clicks-forgot-password) – meagar

Trả lời

29

Câu trả lời ngắn gọn, bạn không thể.

Bạn muốn thực hiện mật khẩu đặt lại chức năng, không phải mật khẩu truy xuất chức năng. Toàn bộ các điểm băm mật khẩu là bạn không nhận được để lưu trữ mật khẩu của người dùng, và bạn không thể khôi phục nó nếu nó bị mất.

This nên cung cấp cho bạn một ý tưởng sơ bộ như thế nào để cho phép người dùng đặt lại quên mật khẩu:

+6

không chỉ vậy anh ta không thể làm được. chính xác hơn anh ta không thể làm được. nếu không băm sẽ vô dụng theo định nghĩa. – ITroubs

+2

Darn. Tôi nên đi cho câu trả lời ngắn :) –

+0

Cảm ơn vì điều này. Vì vậy, đặt lại mật khẩu có ý nghĩa. Cảm ơn! – BigMike

8

Phương pháp tốt nhất là không cố gắng để khôi phục mật khẩu gốc. Nếu người dùng mất mật khẩu thì hãy tạo mật khẩu mới, ngẫu nhiên và sử dụng phương thức ngoài băng để gửi cho họ (ví dụ: email). Hãy nhớ rằng toàn bộ các điểm băm mật khẩu là để ngăn chặn phục hồi.

Tôi biết, tôi biết, email không an toàn. Nhưng nếu bạn yêu cầu người dùng thay đổi ngay mật khẩu đã tạo thì rủi ro sẽ giảm thiểu.

Nhân tiện, tôi không thể khuyên bạn nên đủ muối và đổi mã băm để ngăn chặn các cuộc tấn công brute-force trong trường hợp kẻ tấn công có được giá trị băm.

3

NO

Không có cách nào hiệu quả được biết đến của quay trở lại một băm SHA1 để nó văn bản gốc (vì nó là một chức năng một cách theo thiết kế). Nếu bạn muốn có thể hiển thị cho người dùng mật khẩu của họ sau này, bạn sẽ để lưu trữ mật khẩu đó theo phương thức có thể đảo ngược (mã hóa IE, văn bản thuần túy). Điều này vẫn có thể là một ý tưởng tồi, hãy thử tìm một better way of doing it.

+0

Cách không hiệu quả để hoàn nguyên hàm băm sha1 là gì? :) –

+0

@George Rainbow Tables sẽ hoạt động khá tốt trên các mật khẩu đơn giản ngắn, nhưng nếu băm được muối hoặc chứa các ký hiệu, có thể bạn sẽ không thể đảo ngược nó. –

+0

@George - lực lượng vũ phu :) – Ishtar

Các vấn đề liên quan