Có một số điểm có thể được cải thiện, nhưng trước tiên tôi khuyên bạn nên sử dụng chức năng mới của PHP password_hash () . Hàm này sẽ tạo một muối an toàn và đưa nó vào giá trị băm kết quả, vì vậy bạn có thể lưu trữ nó trong một trường cơ sở dữ liệu. Cũng tồn tại một gói tương thích cho các phiên bản trước đó.
// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($password, PASSWORD_BCRYPT);
// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($password, $existingHashFromDb);
Một số suy nghĩ về mã của bạn:
- Bạn tạo một mã băm BCrypt với crypt (), vì vậy muối sẽ là một phần của hàm băm kết quả. Không cần phải lưu trữ riêng.
- Việc tạo muối có thể được cải thiện, sử dụng nguồn ngẫu nhiên của hệ điều hành MCRYPT_DEV_URANDOM.
- Nếu bạn thay đổi hệ số chi phí thành 9, thì định dạng sẽ trở nên không hợp lệ, vì crypt yêu cầu hai chữ số.