Phân loại theo mục đích
| Loại | Đại diện | Đầu ra | Mục đích chính | Trạng thái |
|---|---|---|---|---|
| Cryptographic Hash (Mật mã) | SHA-256, SHA-3, BLAKE2/3 | 256-512-bit | Chữ ký số, MAC, KDF, blockchain, integrity | An toàn, tiêu chuẩn |
| Password Hashing (KDF chậm) | Argon2id, bcrypt, scrypt, PBKDF2 | Tuỳ chỉnh (có salt, cost) | Lưu trữ mật khẩu (chống brute-force) | Bắt buộc cho password |
| Checksum / Non-crypto | CRC32, xxHash, MurmurHash, FNV | 32/64-bit | Kiểm tra lỗi truyền tải, hash table, deduplication | Không dùng cho bảo mật |
| Legacy / Broken | MD5, SHA-1, RIPEMD-160 | 128-160-bit | Hệ thống cũ, git (SHA-1), Bitcoin (RIPEMD-160) | Cấm dùng mới |
Chi tiết các thuật toán Cryptographic Hash chính
SHA-2 Family (FIPS 180-4) — Tiêu chuẩn hiện tại
- SHA-224/256: 32-bit word, 64 vòng, block 512-bit. SHA-256 phổ biến nhất.
- SHA-384/512: 64-bit word, 80 vòng, block 1024-bit. Nhanh hơn trên CPU 64-bit.
- SHA-512/224, SHA-512/256: Truncated output, chống length extension tự nhiên.
SHA-3 Family (FIPS 202) — Thiết kế Sponge
- Keccak-f[1600] permutation (24 vòng), rate + capacity = 1600.
- SHA3-224/256/384/512: Fixed output.
- SHAKE128/256 (XOF): Output tùy ý độ dài — cực hữu ích cho KDF, domain separation, STROBE.
- Không bị length extension attack (khác Merkle-Damgård).
BLAKE2 / BLAKE3 — Hiệu năng cao
- BLAKE2b (64-bit) / BLAKE2s (32-bit): Nhanh hơn MD5/SHA-1 trên phần mềm, an toàn như SHA-3. Có keyed mode (MAC), salt, personalization.
- BLAKE3: Tree-hashing, parallelizable, SIMD, cực nhanh (1-2 cpb), XOF, keyed, derive key. Khuyên dùng cho high-performance hashing 2024+.
RIPEMD-160
- Thiết kế song song 2 dòng (dual-line), 160-bit. Dùng trong Bitcoin (scriptPubKey P2PKH) + SHA-256 (Hash160).
- An toàn nhưng chậm hơn SHA-256, ít hỗ trợ phần cứng. Không khuyên dùng mới.
Password Hashing — Đặc biệt quan trọng
Không bao giờ dùng SHA/MD5/CRC trực tiếp cho mật khẩu. Cần:
- Salt duy nhất mỗi mật khẩu (16-32 byte random).
- Cost factor (time/memory hardness) điều chỉnh được.
- Argon2id (PHC winner 2015): memory-hard, time-hard, parallelism adjustable. Tiêu chuẩn vàng.
- bcrypt: Blowfish-based, cost factor (work factor), giới hạn 72 byte input. Vẫn tốt, phổ biến.
- scrypt: Memory-hard thứ nhất, tham số N, r, p. Dùng trong Litecoin.
- PBKDF2-HMAC-SHA256: Chỉ time-hard (iteration count), không memory-hard. Chỉ dùng khi bắt buộc FIPS/legacy.
Tóm tắt lựa chọn (2024)
- General crypto hash: SHA-256 (mặc định), BLAKE3 (hiệu năng cao, XOF), SHAKE256 (cần XOF/domain separation).
- Password: Argon2id (mặc định), bcrypt (tương thích).
- Checksum non-crypto: xxHash64 / XXH3 (siêu nhanh), CRC32C (hardware accelerated).
- Legacy migration: SHA-1 → SHA-256; MD5 → SHA-256/BLAKE3.