Không sử dụng SHA1 hoặc SHA256 , như hầu hết những người khác đang đề xuất. Chắc chắn không sử dụng MD5 .
SHA1 / 256 và MD5 đều được thiết kế để tạo tổng kiểm tra của tệp và chuỗi (và các kiểu dữ liệu khác, nếu cần). Do đó, chúng được thiết kế để nhanh nhất có thể, để tổng kiểm tra được tạo nhanh chóng.
Tốc độ nhanh này giúp việc thực thi mật khẩu dễ dàng hơn nhiều, vì một chương trình được viết tốt có thể dễ dàng tạo ra hàng nghìn băm mỗi giây.
Thay vào đó, hãy sử dụng một thuật toán chậm được thiết kế riêng cho mật khẩu. Chúng được thiết kế để tạo ra lâu hơn một chút, với mặt trái là các cuộc tấn công bruteforce trở nên khó hơn nhiều. Do đó, mật khẩu sẽ an toàn hơn nhiều.
Bạn sẽ không gặp phải bất kỳ nhược điểm hiệu suất đáng kể nào nếu chỉ xem xét việc mã hóa từng mật khẩu riêng lẻ, đây là cách triển khai bình thường của việc lưu trữ và kiểm tra mật khẩu. Nó chỉ là hàng loạt khi có sự khác biệt thực sự.
Cá nhân tôi thích bcrypt. Nên có phiên bản Perl của nó, vì tìm kiếm nhanh trên Google đã cho ra một số kết quả phù hợp.