Không nhất thiết là bạn không nên sử dụng MD5, cũng như bạn không nên sử dụng just MD5, vì điều này khiến bạn dễ bị tấn công bảng cầu vồng (bảng cầu vồng là một bảng các giá trị băm được tính toán trước - nếu mật khẩu của bạn thậm chí là phổ biến hoặc đơn giản từ xa, kẻ tấn công chỉ cần tra cứu bảng băm và anh ta biết mật khẩu văn bản rõ của bạn. )
Ít nhất bạn nên thêm một muối vào mỗi mật khẩu để mọi bảng cầu vồng hiện có đều vô dụng, buộc kẻ tấn công phải tạo toàn bộ bảng cầu vồng mới chỉ dành cho cơ sở dữ liệu mật khẩu của bạn.
Tốt hơn hết là sử dụng một loại muối khác cho mọi mật khẩu trong cơ sở dữ liệu của bạn, chẳng hạn như tên người dùng được liên kết với nó, để kẻ tấn công thậm chí không thể tạo bảng cầu vồng cho toàn bộ cơ sở dữ liệu của bạn và phải bẻ khóa từng mục nhập riêng biệt.
MD5 cũng là một thuật toán rất nhanh. Tốc độ là kẻ thù khi nói đến việc bẻ khóa - càng mất nhiều thời gian để tạo một hàm băm, thì càng mất nhiều thời gian hơn cho mỗi nỗ lực của một hacker. Một cái gì đó đơn giản như băm văn bản rõ ràng 100 lần với một muối bổ sung mới mỗi lần sẽ khó nhận biết (nếu có) đối với người dùng đăng nhập vào trang web của bạn, nhưng nó sẽ làm tăng thời gian bắt buộc mật khẩu lên như cũ 100 lần.
Xa, chi tiết hơn ở đây: http://www.codinghorror.com/blog/ lưu trữ / 000953.html