Công cụ tạo hash cSHAKE256

Tính cSHAKE256 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.

cSHAKE256

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 cSHAKE256 là gì?

cSHAKE256 là phiên bản có thể tùy biến của SHAKE256, đượ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 cSHAKE256

  1. 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).
  2. 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ã.
  3. Đặt Độ dài đầu ra (bit) (mặc định 512).
  4. 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.
  5. 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ụ

Đầu vào
Data 00010203 (Hex bytes), N empty, S = "Email Signature", 512 bits
Đầu ra
d008828e2b80ac9d2218ffee1d070c48b8e4c87bff32c9699d5b6896eee0edd164020e2be0560858d9c00c037e34a96937c561a74c412bb4c746469527281c8c

Mẫu cSHAKE #3 trong NIST SP 800-185.

Khi nào nên dùng Tạo hash cSHAKE256

Dùng cSHAKE256 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 SHAKE256 thuần nếu không cần tùy biến, và dùng KMAC256 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 cSHAKE256 hoạt động như thế nào

cSHAKE256 (NIST SP 800-185) là SHAKE256 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), 136) — 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, cSHAKE256 theo định nghĩa sẽ bằng SHAKE256. 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

cSHAKE256 cung cấp mức bảo mật 256 bit giống SHAKE256. Chuỗi tùy biến là công khai, không phải khóa — hãy dùng KMAC256 để 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 đó cSHAKE256 bằng SHAKE256; với abc và 512 bit bạn sẽ nhận được 483366601360a877…, giống hệt SHAKE256.

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.

Khám phá thêm danh mục