Mật khẩu Joomla được băm MD5, nhưng mật khẩu được muối trước khi được băm. Chúng được lưu trữ trong cơ sở dữ liệu là {hash}:{salt}
muối này là một chuỗi ký tự ngẫu nhiên dài 32 ký tự.
Vì vậy, để tạo một hash mật khẩu mới, bạn sẽ làm gì md5($password.$salt)
EDIT
Được rồi vì vậy để kiểm tra mật khẩu, hãy nói một người dùng myguy
đi vào mật khẩu mypassword
, bạn sẽ lấy hàng từ cơ sở dữ liệu có tên người dùng myguy
.
Trong hàng này, bạn sẽ tìm thấy mật khẩu có nội dung 4e9e4bcc5752d6f939aedb42408fd3aa:0vURRbyY8Ea0tlvnTFn7xcKpjTFyn0YT
. Bạn chia ra các hash mật khẩu và muối:
$hashparts = preg_split (':' , $dbpassword);
echo $hashparts[0]; //this is the hash 4e9e4bcc5752d6f939aedb42408fd3aa
echo $hashparts[1]; //this is the salt 0vURRbyY8Ea0tlvnTFn7xcKpjTFyn0YT
tại tính toán băm sử dụng muối này và mật khẩu myguy
vào
$userhash = md5($userpassword.$hashparts[1]); // This would be 'mypassword' and the salt used in the original hash
Bây giờ nếu điều này $userhash
và $hashparts[0]
giống hệt người dùng đã bước vào mật khẩu chính xác.
câu hỏi sâu :) và nếu bạn vẫn nghĩ rằng md5 là cách bình thường để lưu trữ mật khẩu, bạn có thể muốn nghiên cứu thêm một chút về điều đó – mishu
Chỉ cần một FYI, MD5 KHÔNG BAO GIỜ được sử dụng cho mật khẩu băm. Không bao giờ. Đặc biệt là không có muối như trong ví dụ của bạn. – tangrs
Cảm ơn thông tin; Nhưng ở đây tôi không về để tạo ra một lĩnh vực mật khẩu. – Red