2013-08-03 55 views

Trả lời

28

Bạn có thể xác thực rằng mật khẩu đã cho là đúng cho tên người dùng đã cho bằng cách sử dụng tệp bóng.

Trên hầu hết các bản phân phối hiện đại, mật khẩu được băm được lưu trữ trong tệp bóng/etc/shadow (chỉ có thể đọc được bằng gốc). Như gốc, kéo dòng từ tập tin shadow cho người sử dụng nhất định như vậy:

cat /etc/shadow | grep username 

Bạn sẽ thấy một cái gì đó như thế này:

username:$1$TrOIigLp$PUHL00kS5UY3CMVaiC0/g0:15020:0:99999:7::: 

Sau khi tên người dùng đó là $ 1. Điều này chỉ ra rằng nó là một băm MD5. Sau đó có $ khác, sau đó (trong trường hợp này) TrOIigLp theo sau bởi $ khác. TrOIigLp là muối. Sau đó là mật khẩu băm, được băm bằng muối - trong trường hợp này là PUHL00kS5UY3CMVaiC0/g0.

Bây giờ, bạn có thể sử dụng openssl để băm mật khẩu được sử dụng muối cùng, như vậy:

openssl passwd -1 -salt TrOIigLp 

Nhập mật khẩu đưa ra khi được nhắc nhở, lệnh openssl cần tính toán băm MD5 sử dụng muối cung cấp, và nó phải chính xác giống như ở trên từ tệp bóng. -1 trong lệnh trên là cho băm MD5.

+0

Cảm ơn thông tin. Tôi đã không biết về các phần của trường thứ hai của tệp bóng. Bây giờ tôi thậm chí có thể sử dụng hàm crypt() ... câu trả lời tuyệt vời. – smit

+0

@ mti2935 bạn có nghĩa là 'cat/etc/shadow | grep username' hoặc thậm chí 'grep username/etc/shadow'? –

+0

Russell, cảm ơn sự điều chỉnh. Phải, nó phải là 'mèo', không phải là 'tiếng vang'. Tôi đã chỉnh sửa câu trả lời. – mti2935