Tạo mã hash
Nhập văn bản hoặc chọn một tệp để nhận mã băm MD5, SHA-1, SHA-256, SHA-384 và SHA-512 hiển thị cạnh nhau, mỗi mã có nút sao chép riêng. Việc băm chạy ngay trên thiết bị của bạn bằng Web Crypto API của trình duyệt và một hàm MD5 cục bộ, nên tệp không bao giờ bị tải lên.
0 ký tự · 0 từ · 0 dòng
- MD5không dùng cho bảo mật
- —
- SHA-1không dùng cho bảo mật
- —
- SHA-256
- —
- SHA-384
- —
- SHA-512
- —
0 ký tự · 0 từ · 0 dòng
Chạy hoàn toàn trong tab trình duyệt này. Văn bản của bạn không bao giờ được tải lên hay lưu trữ.
Kích thước digest
Độ dài và digest của đầu vào rỗng được tính bằng chính hàm MD5 của trang này và Web Crypto API khi trang được tạo.
| Thuật toán | Số bit digest | Độ dài hex | Số bit khối | Trạng thái | Hash của đầu vào rỗng |
|---|---|---|---|---|---|
| MD5 | 128 | 32 | 512 | Đã bị phá: tìm ra xung đột năm 2004 | d41d8cd98f00b204e9800998ecf8427e |
| SHA-1 | 160 | 40 | 512 | Đã bị phá: xung đột được chứng minh năm 2017 | da39a3ee5e6b4b0d3255bfef95601890afd80709 |
| SHA-256 | 256 | 64 | 512 | An toàn (SHA-2) | e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 |
| SHA-384 | 384 | 96 | 1024 | An toàn (SHA-2) | 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b |
| SHA-512 | 512 | 128 | 1024 | An toàn (SHA-2) | cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e |
Năm thuật toán, hai trong số đó đã lỗi thời
Hàm băm biến dữ liệu đầu vào có kích thước bất kỳ thành một "dấu vân tay" có độ dài cố định. Chỉ cần đổi một ký tự, khoảng một nửa số bit đầu ra sẽ thay đổi, nên ngay cả "UltKit" và "ultkit" cũng cho ra hai giá trị băm hoàn toàn khác nhau. MD5, do Ron Rivest công bố trong RFC 1321 năm 1992, cho ra 128 bit (32 ký tự thập lục phân). Năm 2004, Xiaoyun Wang và các cộng sự chỉ ra cách tạo hai đầu vào khác nhau có cùng giá trị băm MD5, và đến năm 2012, mã độc Flame đã dùng một vụ va chạm MD5 để giả mạo chứng chỉ ký mã của Microsoft. SHA-1 (160 bit) cũng bị phá theo cách tương tự khi Google và CWI Amsterdam công bố vụ va chạm thực tế đầu tiên, SHAttered, vào năm 2017. Cả hai đều được gắn nhãn "không dùng cho bảo mật" ở đây.
SHA-256, SHA-384 và SHA-512 thuộc họ SHA-2, được NIST quy định trong FIPS 180-4, và hiện chưa có cuộc tấn công thực tế nào nhắm vào chúng. SHA-256 là lựa chọn mặc định cho các bản tải phần mềm, định dạng đối tượng mới của Git, chứng chỉ TLS và Bitcoin. MD5 và SHA-1 vẫn dùng tốt cho các việc không có đối thủ tấn công, như phát hiện lỗi hỏng dữ liệu ngẫu nhiên hoặc loại bỏ file trùng lặp, nên nhiều trang tải xuống vẫn liệt kê chúng.
Vì sao băm không phải là mã hóa
Mã hóa vốn có thể đảo ngược: ai có khóa sẽ lấy lại được dữ liệu gốc. Hàm băm không có khóa và không thể đảo ngược, vì vô số đầu vào cùng cho ra một giá trị băm. Nhưng điều đó không có nghĩa là băm là nơi chứa bí mật an toàn. Kẻ tấn công thấy SHA-256 của một đầu vào ngắn hoặc phổ biến chỉ cần băm thử các ứng viên cho đến khi trùng khớp, và các bảng tính sẵn đã bao phủ hàng tỉ mật khẩu quen thuộc. Hàm băm nhanh được thiết kế để chạy nhanh, và GPU hiện đại thử được hàng tỉ lần đoán SHA-256 mỗi giây.
Vì vậy, hãy lưu mật khẩu bằng hàm băm mật khẩu cố ý chạy chậm và có salt như Argon2, bcrypt hoặc scrypt, đừng bao giờ dùng MD5 hay SHA-256 thuần, và hãy tạo chính các mật khẩu đó bằng công cụ tạo mật khẩu. Hãy dùng trang này cho những việc hàm băm nhanh làm tốt: xác minh file tải về khớp với checksum mà nhà phát hành công bố, so sánh hai file mà không cần mở, hoặc kiểm tra giá trị băm do chính mã của bạn tính ra. Văn bản được băm dưới dạng UTF-8 và không có ký tự xuống dòng ở cuối, đây thường là lý do kết quả khác với echo "text" | sha256sum trong terminal. Trang công cụ cho nhà phát triển so sánh băm với các kiểu mã hóa đảo ngược được trên cùng một mẫu.
Câu hỏi thường gặp
- Làm sao kiểm tra tệp đã tải về bằng mã checksum SHA-256?
- Chọn file bằng mục Hash a file, rồi so sánh dòng SHA-256 với giá trị trên trang của nhà phát hành. Mọi ký tự phải khớp; hex viết hoa chỉ thay đổi cách hiển thị các chữ cái từ a đến f.
- Có thể giải mã hash MD5 hoặc SHA-256 không?
- Không, vì không có gì để giải mã. Các trang tự nhận đảo ngược được hàm băm thực chất tra giá trị băm trong bảng các chuỗi đã băm trước đó, cách này chỉ hiệu quả với đầu vào ngắn hoặc phổ biến.
- Vì sao vẫn cung cấp MD5 dù thuật toán này đã bị phá?
- Nhiều hệ thống vẫn công bố checksum MD5, và nó phát hiện rất tốt các thay đổi ngẫu nhiên. MD5 chỉ bị phá khi đối mặt với kẻ tấn công cố ý tạo ra các file va chạm.
- Mã hash MD5 của chuỗi rỗng là gì?
- d41d8cd98f00b204e9800998ecf8427e. Thấy giá trị này thường nghĩa là chương trình đã băm một dữ liệu rỗng, chẳng hạn do file không tải được trước khi băm.
- SHA-512 có an toàn hơn SHA-256 không?
- Cả hai đều chưa bị phá và vượt xa khả năng dò tìm vét cạn. SHA-512 có đầu ra dài hơn và có thể nhanh hơn trên bộ xử lý 64 bit, nhưng SHA-256 là lựa chọn được mong đợi rộng rãi hơn cho checksum và chữ ký.