2010-12-13 9 views
5

Tôi có mục nhập cơ sở dữ liệu cho mật khẩu ở định dạng md5, nhưng khi người dùng sử dụng "Quên mật khẩu" thì tôi có thể cho họ mật khẩu mong muốn bằng cách nào?Tôi có mật khẩu được mã hóa md5, cách đặt mật khẩu cho người dùng khi sử dụng "Quên mật khẩu"?

+1

Oblig. nitpick: MD5 chức năng là * băm * - thông tin bị mất từ ​​kết quả, dữ liệu ban đầu là không thể phục hồi. Với * mã hóa * OTOH, dữ liệu gốc có thể được khôi phục hoàn toàn bằng khóa chính xác. – Piskvor

+0

có thể trùng lặp của [Có thể giải mã băm md5 không?] (Http://stackoverflow.com/questions/1240852/is-it-possible-to-decrypt-md5-hashes) –

Trả lời

12

Bạn không thể làm điều đó từ một băm MD5; bạn cũng không thể. Khôi phục mật khẩu phải có thể thu vào.

Quy trình thông thường là gửi mã thông báo đặt lại mật khẩu (URL) đến địa chỉ email của họ để người dùng có thể chọn mật khẩu mới.

+0

cảm ơn @Marcelo Cantos –

2

Bạn không thể làm điều đó mà không đặt mật khẩu trong cơ sở dữ liệu, điều này là không mong muốn, nhưng bạn có thể tạo mật khẩu mới và gửi mật khẩu cho họ. Hoặc một liên kết nơi họ có thể đặt lại mật khẩu của họ.

1

Bạn nhận được 1/100 cơ hội khôi phục mật khẩu đó (phương thức từ điển) cho độ dài của mật khẩu. Tôi sẽ không giới thiệu nó.

Tốt hơn là tạo mật khẩu ngẫu nhiên mới và gửi mật khẩu đó đến email của người dùng.

+0

Ít hơn nhiều so với 1/100, thực sự - đó là toàn bộ điểm băm: một cách đơn giản và nhanh chóng (dữ liệu để băm), phức tạp và rất chậm (như trong "hầu như không thể khi thực hiện đúng") theo hướng khác (băm vào dữ liệu). – Piskvor

+0

@Piskvor thực sự đó chỉ là ước tính của tôi. : P nó sẽ phụ thuộc vào từ điển được sử dụng. – Ruel

+0

Nếu bạn đang nhận được tỷ lệ thu hồi 1/100. Bạn có một hệ thống khủng khiếp không an toàn. Trong thực tế, bạn có thể kiểm tra hệ thống của riêng bạn để biết tỷ lệ khôi phục bằng cách sử dụng các bộ mã hóa/giải mã md5 khác nhau. Quay phục hồi 0%. http://www.md5decrypter.com/ – DampeS8N

2

bạn phải gửi new password cho người dùng và sau đó đặt vào cơ sở dữ liệu. nếu không mật khẩu ban đầu có thể không phục hồi.

Cảm ơn.

3

Bạn không thể - MD5 đơn giản chỉ là một băm "một chiều" - không phải là phương tiện mã hóa dữ liệu mà sau đó có thể được giải mã.

Như vậy, ý tưởng chung là:

  1. Gửi cho người dùng một email đến địa chỉ đã đăng ký của họ với một liên kết đặt lại trong đó. (Để chứng minh họ thực sự sở hữu địa chỉ.) Liên kết đặt lại phải chứa băm dựa trên một số khía cạnh dữ liệu người dùng cụ thể của họ để không thể dễ dàng đoán được, v.v. (ví dụ: Thời gian tạo tài khoản.)

  2. Khi người dùng nhấp vào liên kết họ truy cập vào trang đặt lại mật khẩu để kiểm tra băm ở trên, hãy tạo mật khẩu mới (lý tưởng là kết hợp chữ hoa/chữ thường và số ít, mặc dù tôi luôn có xu hướng bỏ qua ký tự như '0', ' o ',' O ', v.v. vì mục đích rõ ràng) và sau đó gửi cho người dùng mật khẩu mới trong email, khuyên họ nên thay đổi mật khẩu này càng sớm càng tốt.

Sau đó, người dùng có thể đăng nhập và truy cập trang web như bình thường.

+0

Tôi sẽ bỏ qua email thứ hai gửi mật khẩu mới. Cho phép người dùng thay đổi mật khẩu trực tiếp từ liên kết đó. – Danosaure