Bỏ qua đến nội dung chính
FreeOnlineTools Go
Tiếng Việt
Giải thích

Thuật toán Băm được Giải thích: MD5, SHA-1, SHA-256, SHA-512

Bởi FreeOnlineTools Team · Đã cập nhật 2026-08-28

Trả lời nhanh

MD5 và SHA-1 đã bị phá và không được dùng cho mục đích nhạy cảm bảo mật. SHA-256 là default hiện tại cho kiểm tra integrity và chữ ký. SHA-512 nhanh hơn trên CPU 64-bit. Dùng Hash Generator để tính chúng trong trình duyệt.

Giới thiệu

Hàm hash cryptographic nhận input kích thước tùy ý và tạo digest kích thước cố định, deterministic, tính nhanh, không thể đảo ngược, collision-resistant và avalanche-sensitive (thay đổi một bit thay đổi khoảng một nửa bit output). MD5 (128-bit), SHA-1 (160-bit), SHA-256 (256-bit) và SHA-512 (512-bit) là bốn hàm hash phổ biến nhất, nhưng thuộc tính bảo mật khác biệt đáng kể.

Từng bước một

  1. Hiểu các thuộc tính của hàm băm

    Hàm băm mật mã tốt có tính xác định (cùng một đầu vào luôn mang lại cùng một đầu ra), đầu ra có kích thước cố định, tính toán nhanh, không thể đảo ngược (kháng trước hình ảnh), không thể tìm thấy hai đầu vào có cùng đầu ra (khả năng chống va chạm) và tuyết lở (thay đổi đầu vào rất nhỏ lật ~ 50% số bit đầu ra).

  2. Biết kích thước thông báo

    MD5 tạo ra 128 bit (32 ký tự hex). SHA-1 tạo ra 160 bit (40 ký tự hex). SHA-256 tạo ra 256 bit (64 ký tự hex). SHA-512 tạo ra 512 bit (128 ký tự hex). Thông báo dài hơn làm giảm khả năng xung đột nhưng tăng kích thước lưu trữ.

  3. Tìm hiểu lý do tại sao MD5 và SHA-1 bị hỏng

    Các nhà nghiên cứu đã tìm thấy các cuộc tấn công va chạm thực tế chống lại MD5 (2004) và SHA-1 (2017, cuộc tấn công SHAttered). Sự va chạm cho phép kẻ tấn công tạo ra hai đầu vào khác nhau với cùng một hàm băm, phá vỡ chữ ký số và cơ quan cấp chứng chỉ. Không nên sử dụng để bảo mật.

  4. Chọn thuật toán phù hợp

    Để kiểm tra tính toàn vẹn của tệp trong đó tốc độ quan trọng hơn bảo mật, MD5 hoặc SHA-1 vẫn phổ biến. Đối với bất kỳ mục đích sử dụng nhạy cảm nào về bảo mật (mật khẩu, chữ ký, chứng chỉ, chuỗi khối), hãy sử dụng SHA-256 hoặc SHA-512. Để lưu trữ mật khẩu, hãy sử dụng KDF chậm như bcrypt, scrypt hoặc Argon2 —không bao giờ ở dạng thô SHA-256.

  5. Tính toán và xác minh giá trị băm

    Sử dụng Trình tạo Hash để băm văn bản bằng bất kỳ thuật toán nào hoặc Hash Tệp để tính toán hàm băm của tệp cục bộ. So sánh thông báo kết quả với một giá trị đã biết để xác minh tính toàn vẹn - chỉ một bit khác biệt có nghĩa là tệp đã bị hỏng hoặc bị giả mạo.

Ví dụ

MD5 của 'xin chào' (128-bit, 32 ký tự hex)

đầu vào: hello

đầu ra: 5d41402abc4b2a76b9719d911017c592

SHA-256 của 'xin chào' (256-bit, 64 ký tự hex)

đầu vào: hello

đầu ra: 2cf24dba5fb0d30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

Hiệu ứng tuyết lở —thay đổi một ký tự

đầu vào: xin chào vs xin chào

đầu ra: SHA-256('hello') bắt đầu 2cf24dba... trong khi SHA-256('Hello') bắt đầu 185f8db3... —hoàn toàn khác dù đầu vào thay đổi một bit

Các vấn đề thường gặp

  • Sử dụng MD5 hoặc SHA-1 để băm mật khẩu: cả hai đều nhanh và bị hỏng, khiến cho các cuộc tấn công bạo lực và bảng cầu vồng trở nên tầm thường. Thay vào đó hãy sử dụng bcrypt, scrypt hoặc Argon2.
  • Nhầm lẫn giữa băm với mã hóa: băm là một chiều và không thể đảo ngược; mã hóa là hai chiều. Bạn không thể 'giải mã' một hàm băm — bạn chỉ có thể so sánh các hàm băm.
  • Bỏ qua các cuộc tấn công kéo dài độ dài: MD5, SHA-1, SHA-256 và SHA-512 đều dễ bị tấn công kéo dài độ dài khi được sử dụng làm MAC. Sử dụng HMAC-SHA256 để xác thực tin nhắn.
  • So sánh các giá trị băm với == thay vì so sánh theo thời gian liên tục: rò rỉ thời gian cho phép kẻ tấn công khôi phục các giá trị băm theo từng byte. Sử dụng so sánh thời gian liên tục trong mã bảo mật.

Mẹo

  • Mặc định là SHA-256 cho các hệ thống mới —nó nhanh, được hỗ trợ rộng rãi và không có cuộc tấn công va chạm thực tế nào kể từ năm 2026.
  • Để lưu trữ mật khẩu, hãy sử dụng bcrypt với hệ số công việc là 12+ (hoặc Argon2id với bộ nhớ 64 MB) —không bao giờ ở dạng thô SHA-256, tốc độ này quá nhanh so với GPU.
  • Khi xác minh lượt tải xuống tệp, hãy so sánh cả tên thuật toán và thông báo — hàm băm SHA-1 sẽ vô nghĩa nếu nhà xuất bản chỉ có ý định SHA-256.
  • Sử dụng công cụ File Hash của chúng tôi để tính toán SHA-256 các tệp lớn cục bộ mà không cần tải lên —nó truyền tệp qua Web Crypto API.

Công cụ liên quan

Hướng dẫn liên quan

Tài liệu tham khảo