Chuyển tới nội dung chính
Z

MD5 vs SHA-1

MD5 vs SHA-1 compared — length, speed and security. Both are broken for security; here is what each is still useful for.

MD5 (128-bit) and SHA-1 (160-bit) are both older hash functions that are broken for security — practical collisions exist for both. Neither should be used for signatures or passwords; use SHA-256 instead.

MD5 vs SHA-1 at a glance

MD5 SHA-1
Output 128-bit (32 hex) 160-bit (40 hex)
Speed Faster Fast
Collisions Broken Broken
Safe for security? No No

When to use MD5

Use MD5 only for non-security checksums (deduplication, corruption checks).

When to use SHA-1

Use SHA-1 only where a legacy system requires it; prefer SHA-256 for anything new.

Tools for MD5 & SHA-1

MD5 vs SHA-1

Công cụ hỗ trợ những thuật toán nào?

MD4, MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-384, SHA3-512, Keccak-256 (biến thể dùng trong Ethereum), CRC-32 và NTLM.

Vì sao không có MD2, MD6 và Whirlpool?

MD2 đã bị loại bỏ (deprecated) từ năm 1996 và không có bản triển khai JS nào còn được bảo trì đủ nhỏ gọn để đưa vào. MD6 chỉ là một thiết kế nghiên cứu, chưa từng được triển khai thực tế. Whirlpool cần một bảng tra cứu (lookup table) dài tới 700 dòng — chúng tôi sẵn sàng bổ sung nếu có nhu cầu.

SHA-256 có phải lựa chọn phù hợp không?

Với hầu hết các trường hợp sử dụng hiện đại thì có — SHA-256 nhanh, được hỗ trợ rộng rãi và được xem là an toàn. Hãy dùng SHA3-256 hoặc SHA-512 nếu bạn cần tách biệt hoàn toàn khỏi họ MD/SHA-1. Với việc lưu trữ mật khẩu, hãy dùng một KDF chuyên dụng như Argon2 hoặc bcrypt, không dùng hash thô.

Cần công cụ chỉ dùng một thuật toán duy nhất?

Hãy thử các trang chuyên biệt của chúng tôi: Trình tạo MD5 Hash, Trình tạo SHA-256 Hash, Trình tạo SHA-1 Hash và Trình tạo Keccak-256 Hash.

Keccak-256 khác gì so với SHA3-256?

Keccak-256 là phiên bản gốc của thuật toán Keccak, không có thay đổi về padding; SHA3-256 là phiên bản đã được NIST chuẩn hóa với byte padding hơi khác. Cả hai cho ra kết quả khác nhau với cùng một đầu vào. Ethereum sử dụng Keccak-256 (hàm keccak256() trong Solidity).