Các Lựa Chọn Thay Thế MD5: bcrypt vs Argon2id vs SHA-256 - Khi Nào Mỗi Cái Phù Hợp
FreetoolOnline editorial teamCác lựa chọn thay thế MD5 phụ thuộc vào công việc: Argon2id hoặc bcrypt để lưu mật khẩu, SHA-256 với HMAC để bảo vệ toàn vẹn, PBKDF2 để dẫn xuất khóa. MD5 vẫn hợp lệ cho cache và khử trùng lặp trên dữ liệu không có đối thủ.
Quyết định trong một bảng
Quyết định trong một bảng là Argon2id hoặc bcrypt cho mật khẩu, SHA-256 cho toàn vẹn, và PBKDF2 khi FIPS bắt buộc - trên MD5 Alternatives hãy chọn hàng đúng việc.
| Trường hợp sử dụng | Chọn | Vì sao | Không chọn MD5 vì |
|---|---|---|---|
| Lưu mật khẩu người dùng (web, di động, API) | Argon2id (ưu tiên), bcrypt (dự phòng) | Cứng-bộ-nhớ + chi phí tinh chỉnh; chống vét cạn GPU | MD5 quá nhanh - GPU băm hàm hàng tỉ hash/giây, mật khẩu phổ biến sụp đổ trong mili giây |
| DB mật khẩu MD5 hiện có (cũ) | Di chuyển sang Argon2id ở lần đăng nhập tiếp theo | Bọc MD5(mật khẩu) bên trong Argon2id trong khi reset cuộn | Hash MD5 thuần rò rỉ nhanh; giả sử bị xâm phạm khi tiết lộ |
| Toàn vẹn tệp chống đầu vào đối thủ | SHA-256 | Tấn công va chạm thực tế chống MD5 từ 2004; SHA-256 vẫn an toàn | Kẻ tấn công có thể tạo hai tệp khác nhau cùng MD5 |
| Toàn vẹn tệp chỉ chống lỗi hỏng ngẫu nhiên | MD5 hoặc SHA-256 (cái nào cũng được) | Dữ liệu tự nhiên không va chạm với MD5 trong thực tế | (MD5 chấp nhận ở đây; chọn theo tiện lợi của toolchain) |
| Xác thực thông điệp (HMAC) | HMAC-SHA-256 | HMAC gắn khóa vào hash; HMAC-MD5 vô hiệu trong thực tế | HMAC-MD5 đã bị NIST và IETF không tán thành |
| Dẫn xuất khóa từ mật khẩu | Argon2id (ưu tiên), PBKDF2 (FIPS) | Thiết kế cho dẫn xuất mật khẩu-thành-khóa với hệ số chi phí | MD5 không có hệ số chi phí; tạo ra cùng digest trong nano giây |
| Khóa cache, ETag, khóa khử trùng lặp | MD5 (ổn) | Dấu vân tay độ dài cố định từ đầu vào tùy ý; va chạm không quan trọng cho dữ liệu không đối thủ | (đây là nơi MD5 vẫn xứng vị trí) |
| Lưu trữ theo địa chỉ nội dung (CAS) dưới ảnh hưởng kẻ tấn công | SHA-256 | Tấn công va chạm sẽ cho kẻ tấn công thay thế nội dung với cùng địa chỉ | MD5 không thể đảm bảo tính duy nhất chống các đầu vào được tạo |
Argon2id vs bcrypt cho mật khẩu
Argon2id là hash mật khẩu được OWASP khuyến nghị từ 2022. Nó là cứng-bộ-nhớ, nghĩa là kẻ tấn công GPU phải cấp phát hàng trăm megabyte cho mỗi lần đoán song song. Điểm khởi đầu khuyến nghị là Argon2id, m=64MB, t=3, p=4. Hệ số chi phí mở rộng theo phần cứng: đánh giá lại mỗi hai năm và tăng các tham số.
bcrypt là á quân được hỗ trợ tốt. Nó cũ hơn (1999), sử dụng hệ số chi phí có thể tinh chỉnh biểu thị như log2 của số lần lặp (chi phí 12 vào thời điểm viết bài). Nó không cứng-bộ-nhớ, đây là điểm yếu chính so với Argon2id, nhưng hỗ trợ thư viện của nó qua mọi framework web rộng hơn. Chọn bcrypt chỉ khi nền tảng của bạn chưa có kết nối Argon2id được duy trì.
Một tùy chọn cứng-bộ-nhớ thứ ba là scrypt (RFC 7914). Nó xuất hiện trước Argon2id và sử dụng phương pháp chi phí bộ nhớ và CPU tương tự. Ưu tiên Argon2id khi nền tảng của bạn hỗ trợ nó; sử dụng scrypt làm phương án dự phòng nếu các kết nối Argon2id chưa có sẵn và bạn cần tính cứng-bộ-nhớ mà không có giới hạn chỉ-CPU của bcrypt.
Argon2id hoặc bcrypt đều đúng trong 2026. Không lưu mật khẩu dạng MD5 + salt - sơ đồ đó sụp đổ trước một GPU đơn lẻ trong vài ngày ngay cả với salt ngẫu nhiên dài, vì MD5 là nút thắt, không phải salting.
SHA-256 vs MD5 cho toàn vẹn
Nếu đầu vào có thể được tạo bởi kẻ tấn công, dùng SHA-256. Tấn công Wang 2004 và va chạm Stevens / Lenstra 2008 chống chứng chỉ X.509 đã chỉ ra rằng hai đầu vào khác nhau có thể được tạo để chia sẻ một MD5 duy nhất. Cho chữ ký số, ký mã, hoặc bất kỳ thứ gì kẻ tấn công có thể thay thế nội dung của họ cho của bạn, MD5 vô hiệu; SHA-256 là nguyên hàm đúng.
Nếu đầu vào chỉ là một tải xuống bạn kiểm soát hoặc một artifact build bạn tạo ra, MD5 vẫn ổn cho kiểm tra toàn vẹn. Nó bắt các bit lật ngẫu nhiên bạn thực sự thấy trong thực tế (tia vũ trụ, cáp xấu, đĩa xấu). Toàn bộ tập trade-off MD5 vs SHA-256 trong MD5 vs SHA-256 - khi nào băm hàm với mỗi cái.
PBKDF2 - đường FIPS
PBKDF2 là hàm dẫn xuất khóa dựa trên mật khẩu mà NIST chấp nhận vào 2000. Nó dựa trên lặp: bạn chọn một số đếm, chạy một hash cơ số số lần đó, và hệ số công việc theo đó. Nó không cứng-bộ-nhớ, vì vậy yếu hơn Argon2id chống GPU hiện đại, nhưng là lựa chọn đúng khi môi trường của bạn yêu cầu thuật toán FIPS 140-2 / 140-3. Số lặp sử dụng trong 2026 với HMAC-SHA-256 bên dưới là 600.000 hoặc cao hơn theo hướng dẫn OWASP; với HMAC-SHA-512 là 210.000 hoặc cao hơn. Số thấp hơn vẫn phổ biến trong code cũ; tăng chúng ở lần triển khai tiếp theo.
"MD5 vẫn thuộc về đâu" - danh sách làm việc
- Khóa cache. Băm một URL dài hoặc chuỗi query thành khóa độ dài cố định cho memcached, Redis hoặc một tên tệp. Va chạm không quan trọng; tốc độ quan trọng.
- Dấu vân tay nội dung kiểu ETag. Phát MD5 của một thân phản hồi như header
ETagđể các client có thể kiểm tra lại mà không tải xuống lại. - Kiểm tra toàn vẹn tệp trên một tải xuống bạn tạo ra. Công bố MD5 bên cạnh tệp; người dùng so sánh cục bộ. Nhiều mirror Linux vẫn công bố cả MD5 và SHA-256 vì tính tương thích.
- Khử trùng lặp tải lên đến. Dấu vân tay luồng byte với MD5 để ngắt mạch lưu trữ bản sao chính xác trước khi bạn giữ lại.
- Fixture kiểm tra và ID snapshot. Băm một blob JSON chính tắc để tạo ID xác định cho fixture kiểm tra đơn vị.
Với tất cả những cái đó, trình chuyển đổi MD5 là bề mặt đúng - dán văn bản, lấy hash, sao chép kết quả.
Danh sách kiểm tra di chuyển - chuyển một app hiện có khỏi MD5
- Kiểm toán nơi MD5 được dùng. Grep mã nguồn cho
md5,MessageDigest.getInstance("MD5"),hashlib.md5,crypto.createHash('md5'). Gán thẻ mỗi sử dụng là một trong: mật khẩu, MAC, toàn vẹn, cache. - Mật khẩu - di chuyển cuộn. Thêm một trình xác minh Argon2id bên cạnh trình xác minh MD5. Ở lần đăng nhập thành công tiếp theo, tính lại mật khẩu dưới Argon2id, lưu trình xác minh mới, bỏ hàng MD5. Xoay mọi tài khoản trong 90 ngày; buộc reset bất kỳ cái gì còn lại.
- MAC - thay bằng HMAC-SHA-256. Triển khai HMAC-MD5 từ thời 2010 trong API nên xoay khóa và phát hành lại client với HMAC-SHA-256.
- Toàn vẹn chống đối thủ - thay bằng SHA-256. Bất kỳ thứ gì ký nội dung do người dùng tải lên, phân phối gói, hoặc code bên thứ ba đi sang SHA-256 ngay.
- Toàn vẹn không đối thủ, cache, ETag, khử trùng lặp - để yên. Không khuấy động code đang chạy vì lý do lý thuyết. MD5 ổn ở đây.
Liên quan
Các hướng dẫn liên quan này đề cập đến các câu hỏi kèm theo khi cân nhắc các lựa chọn thay thế MD5 - so sánh đầy đủ MD5 vs SHA-256, lý do MD5 không thể đảo ngược và công cụ cho các trường hợp MD5 vẫn phù hợp.
- MD5 converter - chính công cụ, cho các trường hợp sử dụng nơi MD5 vẫn ổn.
- Why MD5 cannot be decrypted - câu trả lời cho sự nhầm lẫn phổ biến nhất đằng sau truy vấn lựa chọn thay thế MD5.
- MD5 vs SHA-256 - Khi Nào Dùng Cái Nào - so sánh hẹp nếu SHA-256 là ứng cử viên duy nhất của bạn.
- SHA-256 converter - nguyên hàm toàn vẹn chống đối thủ.
- Developer tools hub - bộ công cụ lập trình viên đầy đủ.
- Liên kết tải xuống không hiển thị sau khi chuyển đổi - năm giải pháp - giải thích lý do nút tải xuống có thể ngừng hiển thị sau một thao tác băm hoặc chuyển đổi, và cách phục hồi.