Công cụ tạo hash cSHAKE128
Tính cSHAKE128 với tên hàm N, chuỗi tùy biến S và độ dài đầu ra tùy ý. Đã kiểm chứng với các mẫu NIST SP 800-185, chạy ngay trong trình duyệt.
Bội số của 8, từ 8 đến 16384 bit.
Thường để trống. NIST dành trường này cho các hàm được xây dựng trên cSHAKE.
Nhãn phân tách miền tùy chọn, ví dụ tên ứng dụng của bạn. Chuỗi khác nhau cho ra kết quả hoàn toàn không liên quan.
Chạy hoàn toàn trong trình duyệt. Dữ liệu của bạn không bao giờ bị tải lên.
Tạo hash cSHAKE128 là gì?
cSHAKE128 là phiên bản có thể tùy biến của SHAKE128, được định nghĩa trong NIST SP 800-185. Nó bổ sung tên hàm N và chuỗi tùy biến S để cùng một thông điệp khi được băm cho những mục đích khác nhau sẽ cho ra kết quả không liên quan đến nhau. Công cụ này cho phép bạn đặt N, S và độ dài đầu ra.
Cách sử dụng Tạo hash cSHAKE128
- Nhập hoặc dán dữ liệu vào ô Văn bản cần băm — giá trị băm cập nhật ngay khi bạn gõ (ô trống sẽ hiện hash của đầu vào rỗng).
- Chọn Mã hóa đầu vào: Văn bản (UTF-8) băm các ký tự dưới dạng UTF-8, còn Byte dạng hex hoặc Base64 băm các byte thô sau khi giải mã.
- Đặt Độ dài đầu ra (bit) (mặc định 256).
- Nếu cần, điền Tên hàm (N) (thường để trống) và Chuỗi tùy biến (S), ví dụ tên ứng dụng hoặc giao thức của bạn.
- Chọn Định dạng đầu ra (hex chữ thường, hex chữ hoa hoặc Base64) rồi nhấn Sao chép.
Ví dụ
Data 00010203 (Hex bytes), N empty, S = "Email Signature", 256 bits
c1c36925b6409a04f1b504fcbca9d82b4017277cb5ed2b2065fc1d3814d5aaf5
Mẫu cSHAKE #1 trong NIST SP 800-185.
Khi nào nên dùng Tạo hash cSHAKE128
Dùng cSHAKE128 khi bạn cần phân tách miền: nhiều giá trị băm sinh ra từ cùng một dữ liệu cho các mục đích khác nhau (nhãn dẫn xuất khóa, bản ghi giao thức, tagged hash). Dùng SHAKE128 thuần nếu không cần tùy biến, và dùng KMAC128 nếu có liên quan đến khóa bí mật. N được dành cho các hàm do NIST định nghĩa; ứng dụng thông thường chỉ nên dùng S.
Tạo hash cSHAKE128 hoạt động như thế nào
cSHAKE128 (NIST SP 800-185) là SHAKE128 có thêm cơ chế phân tách miền. Trước thông điệp, hàm hấp thụ bytepad(encode_string(N) || encode_string(S), 168) — tức tên hàm N và chuỗi tùy biến S, mỗi phần được thêm tiền tố là độ dài tính theo bit — sau đó đệm với hậu tố 00 thay vì 1111 như SHAKE. Nếu cả N và S đều rỗng, cSHAKE128 theo định nghĩa sẽ bằng SHAKE128. Giá trị N hoặc S khác nhau cho ra các hàm độc lập với nhau. N và S được nhập dưới dạng văn bản và mã hóa UTF-8.
Các Trường Hợp Sử Dụng Phổ Biến
- Tái tạo các test vector cSHAKE trong NIST SP 800-185
- Dẫn xuất các giá trị riêng biệt cho từng ngữ cảnh khác nhau từ cùng một đầu vào
- Cài đặt hoặc gỡ lỗi KMAC, TupleHash hay ParallelHash, vốn được xây dựng trên cSHAKE
- Băm các thông điệp giao thức kèm một nhãn riêng của ứng dụng
Lưu Ý Bảo Mật
cSHAKE128 cung cấp mức bảo mật 128 bit giống SHAKE128. Chuỗi tùy biến là công khai, không phải khóa — hãy dùng KMAC128 để xác thực. Mọi phép tính diễn ra cục bộ trong trình duyệt của bạn.
Câu Hỏi Thường Gặp
Điều gì xảy ra nếu cả N và S đều rỗng?
Theo định nghĩa, khi đó cSHAKE128 bằng SHAKE128; với abc và 256 bit bạn sẽ nhận được 5881092dd818bf5c…, giống hệt SHAKE128.
N và S khác nhau thế nào?
N (tên hàm) được dành cho các hàm do NIST định nghĩa, như "KMAC" hoặc "TupleHash". S là chuỗi tùy biến tự do dành cho ứng dụng. Trên thực tế, bạn đặt S và để trống N.
N và S được mã hóa như thế nào?
Dưới dạng byte UTF-8, có tiền tố là độ dài tính theo bit (left_encode), rồi được đệm cho đủ rate như quy định trong SP 800-185.