Bộ tạo MD5

MD5 tạo ra một bản tóm tắt dài 128 bit (tương đương 32 ký tự thập lục phân) từ bất kỳ dữ liệu đầu vào nào, văn bản, tệp tin hay luồng dữ liệu. Mặc dù đã bị phá vỡ cho các mục đích mật mã kể từ năm 2004, MD5 vẫn là tiêu chuẩn phổ biến để kiểm tra tính toàn vẹn nhanh chóng (như xác minh việc tải xuống gói phần mềm, tạo dấu vân tay để loại bỏ dữ liệu trùng lặp, hoặc đặt tên cho blob trong Git ở một số trường hợp). Chỉ cần dán văn bản hoặc thả tệp tin vào, công cụ sẽ tạo bản tóm tắt dạng thập lục phân ngay tại chỗ mà không tải lên bất kỳ dữ liệu nào.

Cách tạo giá trị hash MD5

  1. 1

    Chọn dữ liệu đầu vào

    Hộp nhập văn bản cho chuỗi tùy ý, hoặc công cụ chọn tệp với dung lượng bất kỳ lên tới khoảng 2 GB.

  2. 2

    Công cụ tính giá trị MD5 ngay trên máy bạn

    Các tệp được truyền theo từng khối nhỏ, nhờ đó các tệp lớn không chiếm quá nhiều bộ nhớ.

  3. 3

    Đọc bản tóm tắt thập lục phân

    32 ký tự thập lục phân, dạng biểu diễn chuẩn của MD5.

  4. 4

    Sao chép hoặc so sánh

    So sánh với giá trị hash mong đợi (ví dụ MD5 do tác giả gói phần mềm công bố) hoặc sao chép để lưu lại.

MD5 là gì: và không phải là gì

  • Tất định. Cùng một dữ liệu đầu vào luôn cho ra cùng một kết quả 128 bit.
  • Độ dài cố định. Mọi kích thước đầu vào, từ một byte đến một gigabyte, đều tạo ra 32 ký tự thập lục phân.
  • Một chiều. Có một bản tóm tắt MD5, bạn không thể đảo ngược để khôi phục dữ liệu đầu vào (trừ các đầu vào cực nhỏ mà đã có sẵn bảng cầu vồng).
  • ĐÃ BỊ PHÁ VỠ khi dùng làm hàm băm mật mã. Va chạm (collision) có thể được tính toán dễ dàng. ĐỪNG dùng MD5 cho:
    • Lưu trữ mật khẩu (dùng bcrypt, scrypt, Argon2).
    • Chữ ký số (dùng SHA-256 hoặc SHA-3).
    • Ký chứng chỉ TLS (bị các trình duyệt hiện đại từ chối).
    • Bất kỳ tuyên bố toàn vẹn nào nhạy cảm về bảo mật mà kẻ tấn công có thể lợi dụng.

Nơi MD5 vẫn còn dùng tốt

  • Kiểm tra toàn vẹn phi đối kháng. Xác nhận rằng tệp không bị hỏng trong quá trình truyền.
  • Loại bỏ trùng lặp. Tạo dấu vân tay cho các blob giống hệt nhau trong hệ thống lưu trữ.
  • Tạo ETag cho các tài nguyên tĩnh ít thay đổi.
  • Khóa bộ nhớ đệm và băm định địa chỉ theo nội dung.

Ví dụ minh họa

Văn bản đầu vào Bản tóm tắt MD5
(chuỗi rỗng) d41d8cd98f00b204e9800998ecf8427e
a 0cc175b9c0f1b6a831c399e269772661
abc 900150983cd24fb0d6963f7d28e17f72
The quick brown fox jumps over the lazy dog 9e107d9d372bb6826bd81d3542a419d6
The quick brown fox jumps over the lazy dog. (dấu chấm cuối) e4d909c290d0fb1ca068ffaddf22cbd0

Hãy để ý cách chỉ một ký tự (dấu chấm cuối) làm thay đổi hoàn toàn bản tóm tắt, đó chính là hiệu ứng thác đổ.

MD5 so với họ SHA

Hàm Kích thước đầu ra Bị phá vỡ do va chạm? Cách dùng phổ biến hiện nay
MD5 128 bit Có (2004) Toàn vẹn, loại bỏ trùng lặp, ETag
SHA-1 160 bit Có (2017) Cũ; nên tránh trong dự án mới
SHA-256 256 bit Không TLS, commit, mật mã tổng quát
SHA-3 224–512 bit Không Giải pháp thay thế hiện đại cho SHA-2
BLAKE3 256 bit Không Thay thế nhanh cho SHA-2

Câu hỏi thường gặp

Không. MD5 rất dễ bị dò tìm bằng brute-force trên các GPU hiện đại và đã bị phá từ năm 2004. Hãy dùng một hàm băm mật khẩu như Argon2, scrypt hoặc bcrypt.

Với toàn vẹn thông thường (việc tải xuống đã hoàn tất chưa) thì có. Với toàn vẹn chống tấn công (có ai thay tệp bằng phiên bản độc hại không) thì không, hãy dùng SHA-256.

Không. Việc băm được thực hiện ngay trong trình duyệt của bạn thông qua WebCrypto và các mảng có kiểu. Tệp không bao giờ rời khỏi thiết bị của bạn, điều này đặc biệt quan trọng khi băm dữ liệu riêng tư hoặc thuộc thỏa thuận bảo mật (NDA).

Các trình duyệt hiện đại xử lý thoải mái khoảng 2 GB dữ liệu đầu vào dạng luồng. Với các tệp rất lớn (hàng chục GB), nên dùng công cụ dòng lệnh như md5sum hoặc openssl dgst -md5 sẽ hiệu quả hơn.

Đặc tả không quy định chữ hoa hay chữ thường. Hầu hết công cụ Unix xuất chữ thường; một số công cụ Windows dùng chữ hoa. Khi so sánh, hãy chuẩn hóa chữ hoa/thường ở cả hai phía.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác