SHA-256 là gì?
SHA-256 là một thành viên của họ hàm băm mật mã SHA-2, được chuẩn hóa bởi NIST. Hàm này nhận đầu vào là một thông điệp có độ dài bất kỳ và tạo ra mã băm (digest) cố định 256-bit (32 byte), hiển thị tại đây dưới dạng 64 ký tự hệ thập lục phân (hex). Cùng một đầu vào luôn cho ra cùng một mã băm, nhưng chỉ cần thay đổi một ký tự cũng tạo ra kết quả hoàn toàn khác biệt — đây gọi là hiệu ứng thác lũ (avalanche effect). SHA-256 được dùng rộng rãi trong chứng chỉ TLS, chữ ký số, blockchain (Bitcoin) và kiểm tra tính toàn vẹn của tập tin.
Cách sử dụng công cụ này
Hãy gõ hoặc dán bất kỳ đoạn văn bản nào vào ô nhập liệu rồi gửi đi. Công cụ sẽ mã hóa văn bản theo chuẩn UTF-8, chạy thuật toán SHA-256 và trả về mã băm hệ hex cùng với độ dài byte của đầu vào. Đầu vào để trống vẫn hợp lệ và sẽ cho ra mã băm nổi tiếng của chuỗi rỗng.
Giải thích công thức
$$\text{Hash} = \operatorname{SHA\text{-}256}\!\left(\text{Input Text}\right)$$
SHA-256 đệm (padding) thông điệp sao cho độ dài là bội số của 512 bit, chia nó thành các khối 512-bit, rồi xử lý từng khối qua 64 vòng với các phép toán trên bit (xoay vòng, dịch bit, AND/XOR, cộng modulo), trộn lẫn tám biến làm việc 32-bit được khởi tạo từ phần thập phân của căn bậc hai các số nguyên tố. Sau mỗi khối, tám thanh ghi này được cộng trở lại vào trạng thái băm đang chạy; ghép chúng lại sẽ cho ra mã băm 256-bit cuối cùng.
Ví dụ minh họa
Đầu vào abc (3 byte) tạo ra mã băm ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. Chuỗi rỗng tạo ra e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 — một vector kiểm thử tiêu chuẩn.
Câu hỏi thường gặp
SHA-256 có đảo ngược được không? Không. Đây là một hàm một chiều; bạn không thể khôi phục đầu vào từ mã băm.
Tại sao số byte lớn hơn số ký tự của tôi? Các ký tự không thuộc bảng ASCII (dấu thanh, biểu tượng cảm xúc, chữ Trung-Nhật-Hàn) chiếm nhiều byte trong UTF-8, nên độ dài byte có thể vượt quá số lượng ký tự.
SHA-256 còn an toàn không? Có. Tính đến hiện tại chưa có cuộc tấn công va chạm (collision) hay tiền ảnh (preimage) khả thi nào nhắm vào SHA-256; nó vẫn là hàm băm được khuyến nghị cho mục đích sử dụng thông thường.