Công cụ tạo hash Keccak-256

Tạo hash Keccak-256 của bất kỳ văn bản nào ngay trong trình duyệt. Đầu vào UTF-8, hex hoặc Base64; đầu ra hex hoặc Base64. Miễn phí, riêng tư, không tải lên.

Keccak-256

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

Keccak-256 là hàm băm Keccak gốc (phiên bản đã thắng cuộc thi SHA-3 như khi được nộp, 2011) với đầu ra 256 bit, trước khi NIST thay đổi cách đệm cho FIPS 202. Công cụ này tính giá trị băm Keccak-256 256 bit của văn bản hoặc byte thô (hex hoặc Base64) ngay khi bạn gõ và hiển thị dưới dạng 64 ký tự hex hoặc Base64.

Cách sử dụng Tạo hash Keccak-256

  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. 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
abc
Đầu ra
4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45

Keccak-256 của 3 byte ASCII "abc" (UTF-8, đầu ra hex chữ thường), là test vector chuẩn.

Khi nào nên dùng Tạo hash Keccak-256

Dùng công cụ Keccak-256 cho văn bản để băm chuỗi: tái tạo một giá trị trong tài liệu hoặc mã nguồn, tạo test vector, so sánh dữ liệu đầu vào của chữ ký API, hoặc kiểm tra xem chương trình lẽ ra phải xuất ra gì. Đừng dùng nó để kiểm tra tệp tải về: sao chép nội dung tệp vào ô văn bản sẽ làm thay đổi ký tự xuống dòng và bảng mã, hãy dùng công cụ checksum Keccak-256 cho tệp. Với các dự án mới tuân theo tiêu chuẩn (FIPS, NIST), hãy dùng SHA3-256.

Tạo hash Keccak-256 hoạt động như thế nào

Keccak-256 hấp thụ đầu vào vào trạng thái Keccak-f[1600] 1600 bit theo từng khối 1088 bit (capacity 512 bit) và áp dụng 24 vòng hoán vị cho mỗi khối. Nó đệm theo quy tắc pad10*1 của Keccak gốc (byte 0x01 … 0x80), không có hậu tố miền 01 mà FIPS 202 bổ sung sau này. 256 bit đầu tiên của trạng thái chính là giá trị băm, đó là lý do Keccak-256 và SHA3-256 cho kết quả khác nhau với mọi đầu vào. Văn bản trước tiên được chuyển thành byte (mặc định là UTF-8), nên cùng các ký tự sẽ luôn cho cùng một hash.

Các Trường Hợp Sử Dụng Phổ Biến

  • Kiểm tra Keccak-256 mong đợi của một chuỗi trong unit test hoặc fixture
  • Băm các byte hex sao chép từ trình gỡ lỗi, bản bắt gói tin hoặc đặc tả giao thức
  • So sánh đầu ra Keccak-256 giữa hai ngôn ngữ lập trình cho kết quả khác nhau
  • Tạo định danh hoặc khóa cache có tính xác định từ văn bản
  • Lấy dạng Base64 của giá trị băm Keccak-256 để dùng trong header hoặc tệp cấu hình

Lưu Ý Bảo Mật

Keccak-256 chưa có tấn công thực tế nào được biết đến. Hash thuần cũng không phù hợp để lưu mật khẩu: hãy dùng hàm băm mật khẩu chậm, có salt như Argon2, scrypt hoặc bcrypt. Mọi phép tính diễn ra cục bộ trong trình duyệt; những gì bạn nhập không được gửi đi đâu cả.

Câu Hỏi Thường Gặp

Đây có phải hàm băm mà Ethereum gọi là keccak256 không?

Đúng vậy. keccak256 trong Solidity, địa chỉ Ethereum (20 byte cuối của Keccak-256 tính trên public key) và function selector (4 byte đầu của Keccak-256 tính trên chữ ký hàm, ví dụ transfer(address,uint256) → a9059cbb) đều dùng Keccak-256 gốc này, chứ không phải SHA3-256 theo FIPS 202.

Làm sao băm một giá trị hex giống như Solidity?

Solidity băm các byte, nên keccak256(0x1234) băm hai byte. Hãy chọn mã hóa đầu vào Byte dạng hex và dán hex không có dấu cách; nếu chọn Văn bản, công cụ sẽ băm các ký tự ASCII.

Vì sao chỉ đổi một ký tự mà hash thay đổi hoàn toàn?

Đó là hiệu ứng thác lũ (avalanche) mà mọi hàm băm mật mã đều được thiết kế để có: lật một bit đầu vào sẽ làm thay đổi khoảng một nửa trong 256 bit đầu ra, nên các đầu vào giống nhau vẫn cho giá trị băm chẳng liên quan gì đến nhau.

Dấu cách hoặc ký tự xuống dòng ở cuối có ảnh hưởng không?

Có. Hàm băm tính trên từng byte, nên abc và abc kèm ký tự xuống dòng sẽ cho hai giá trị Keccak-256 khác nhau. Hãy chắc chắn đầu vào chứa đúng những byte bạn muốn băm.

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