Thông thường, thực tế không cần phải mã hóa ngược mật khẩu. Có khả năng đó làm giảm tính bảo mật của hệ thống. Thay vào đó, hãy sử dụng một hàm băm không thể đảo ngược. Tôi đề xuất SHA-256 (hoặc lớn hơn) tạo ra kết quả chuỗi:
SHA2 (CONCAT (user.name, user.password, 'some salt', user.id), 256)
Tôi cũng đã thất vọng với hàng loạt bảng cầu vồng khỏi bất kỳ mục đích sử dụng nào bằng cách sử dụng dữ liệu khác luôn được biết đến tại thời điểm xác thực mật khẩu.
SHA2
yêu cầu MySQL 5.5 trở lên. Nếu bạn đang sử dụng phiên bản cũ hơn, SHA1()
gần như tốt và nói chung là tốt hơn nhiều so với MD5
, AES
, v.v.