Một vài điều ở đây:
-
Bạn không thực sự mã hóa nó, bạn đang băm nó. Điều dễ dàng cho người mới nhầm lẫn, nhưng chỉ muốn giải quyết vấn đề đó một cách dễ dàng.
-
Không sử dụng MD5, nó không phải là một hàm băm rất an toàn. Thay vào đó, hãy sử dụng một trong các biến thể SHA nếu có thể.
-
Đừng chỉ băm mật khẩu, bạn cũng sẽ muốn "ướp muối" nó. Về cơ bản, điều này liên quan đến việc thêm một chuỗi ngẫu nhiên vào mật khẩu trước khi bạn băm nó và lưu trữ chuỗi ngẫu nhiên đó ở một nơi nào đó mà bạn có thể lấy nó sau này (để bạn có thể xác thực hàm băm khi người dùng nhập mật khẩu của họ). Điều này giúp ngăn chặn các cuộc tấn công từ điển được tính toán trước.
Đối với việc tạo mật khẩu, tôi nghĩ bạn đang đi đúng hướng - tôi sẽ chỉ tạo mật khẩu khi họ tạo tài khoản, gửi email cho họ, sau đó băm và lưu trữ băm (và một muối ngẫu nhiên) trên hồ sơ người dùng trong DB.