Về hàm băm mật mã
Hàm băm mật mã lấy bất kỳ đầu vào nào và tạo ra chuỗi hex có chiều dài cố định. Ngay cả thay đổi nhỏ trong đầu vào cũng thay đổi hoàn toàn đầu ra. Điều này làm cho hash hữu ích để xác minh tính toàn vẹn của tệp, lưu mật khẩu và chữ ký số.
SHA-256 và SHA-512 thuộc họ SHA-2 và vẫn an toàn cho hầu hết các mục đích hiện nay. SHA-1 bị coi là yếu trước các cuộc tấn công va chạm và được đưa vào chỉ vì mục đích tương thích. MD5 không có sẵn vì chính sách bảo mật trình duyệt hạn chế nó qua Web Crypto API.
Cách tạo hash SHA của một văn bản?
Để tạo hash SHA, đưa các byte UTF-8 của văn bản vào thuật toán băm đã chọn (SHA-1, SHA-256, SHA-384 hoặc SHA-512), thuật toán xử lý dữ liệu qua một số vòng thao tác bit cố định và tạo ra một dấu vân tay có độ dài cố định, hiển thị ở dạng thập lục phân. Ví dụ: hash SHA-256 của "hello" luôn luôn là 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824.
Các bước tạo hash mật mã học
- Đổi văn bản đầu vào thành byte bằng bảng mã UTF-8.
- Chọn một thuật toán băm: SHA-1 (đầu ra 160 bit), SHA-256 (256 bit), SHA-384 (384 bit) hoặc SHA-512 (512 bit).
- Đưa các byte qua hàm nén của thuật toán, chạy theo số vòng cố định bất kể độ dài đầu vào.
- Thuật toán tạo ra một dấu vân tay nhị phân có độ dài cố định — 20 byte cho SHA-1, 32 byte cho SHA-256, 48 byte cho SHA-384, 64 byte cho SHA-512.
- Chuyển dấu vân tay nhị phân thành chuỗi thập lục phân chữ thường để hiển thị, mỗi byte tương ứng hai ký tự hex.
Độ dài đầu ra của các hàm băm
SHA-1 = 160 bit (40 ký tự hex) | SHA-256 = 256 bit (64 ký tự hex) | SHA-384 = 384 bit (96 ký tự hex) | SHA-512 = 512 bit (128 ký tự hex)
- Dấu vân tay (digest) = đầu ra có độ dài cố định của một hàm băm, hiển thị ở đây dạng thập lục phân chữ thường
- Bất kỳ thay đổi nào ở đầu vào, dù chỉ một ký tự, cũng tạo ra dấu vân tay hoàn toàn khác (hiệu ứng lở tuyết)
Ví dụ hash của văn bản "hello"
| Thuật toán | Hash của "hello" |
|---|
| SHA-1 | aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d |
| SHA-256 | 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 |
| SHA-384 | 59e1748777448c69de6b800d7a33bbfb9ff1b463e44354c3553bcdb9c666fa90125a3c79f90397bdf5f6a13de828684f |
| SHA-512 | 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043 |
Câu hỏi thường gặp
Dùng SHA-1 có an toàn không?
SHA-1 không an toàn cho các mục đích bảo mật như chữ ký số hay xác thực chứng chỉ, vì các nhà nghiên cứu đã chứng minh một cuộc tấn công va chạm thực tế vào năm 2017 (hai đầu vào khác nhau tạo ra cùng một hash). SHA-1 chỉ được đưa vào đây để tương thích với hệ thống cũ và các mục đích không liên quan bảo mật như checksum đơn giản; hãy dùng SHA-256 trở lên cho mọi việc liên quan đến bảo mật.
Vì sao công cụ này không có MD5?
Công cụ này dùng Web Crypto API tích hợp sẵn của trình duyệt (crypto.subtle.digest), hỗ trợ SHA-1 và họ SHA-2 nhưng không triển khai MD5, vì MD5 được xem là đã bị phá vỡ về mặt mật mã học và các nhà phát triển trình duyệt không đưa nó vào API chuẩn.
Tôi có thể đảo ngược một hash để tìm lại văn bản gốc không?
Không. Một hàm băm mật mã học theo thiết kế là hàm một chiều — không có thuật toán nào khôi phục được đầu vào từ dấu vân tay. Các công cụ trông như "phá" được hash thực chất hoạt động bằng cách băm một lượng lớn các phỏng đoán rồi so sánh kết quả, chứ không đảo ngược phép tính.
Hash dùng để làm gì nếu không thể đảo ngược?
Hash dùng để xác minh dữ liệu không bị thay đổi: so sánh hash của một tệp đã tải về với hash được công bố sẽ xác nhận tính toàn vẹn của tệp, và so sánh hash mật khẩu (với việc thêm muối phù hợp) cho phép hệ thống xác thực đăng nhập mà không cần lưu mật khẩu dạng văn bản thuần.
Công cụ này băm văn bản UTF-8 hoàn toàn trong trình duyệt của bạn qua Web Crypto API; không băm tệp tải lên, không hỗ trợ MD5 và không thêm muối, nên cùng một văn bản đầu vào luôn tạo ra hash giống hệt như hiển thị ở đây.
Sources: FIPS 180-4 - Secure Hash Standard (SHS)
Quyền riêng tư và an toàn
- Tính toán trong trình duyệt — Dữ liệu bạn nhập chỉ được tính trên thiết bị của bạn và không gửi tới máy chủ utilduck.
- Kết nối được mã hóa — Mọi trang đều dùng HTTPS nên không ai trên đường truyền đọc được nội dung.
- Không chia sẻ với bên thứ ba — Dữ liệu bạn nhập không được chuyển cho dịch vụ phân tích hay quảng cáo.
- Không lưu trữ — Kết quả không được lưu trên máy chủ nào và bạn không cần tạo tài khoản.
Cập nhật lần cuối: 2026-08-17