Đến phần nội dung
Toova
Tất cả công cụ

Hash Keccak-256

Riêng tư theo thiết kế — chạy hoàn toàn trong trình duyệt của bạn

Dán chuỗi UTF-8 bất kỳ vào ô input và đọc digest Keccak-256 dài 32 byte. Đây cũng là thuật toán Ethereum dùng khắp nơi: địa chỉ checksum EIP-55, function selector, suy ra storage slot, và địa chỉ hợp đồng qua CREATE2.

Keccak-256 so với SHA3-256

Keccak-256 là phương án Keccak đệ trình cho NIST trước khi trở thành SHA3. Chuẩn SHA3 cuối thay đổi luật padding (multi-rate padding thêm hai bit), do đó SHA3-256 và Keccak-256 cùng input vẫn khác kết quả. Ethereum giữ Keccak gốc để các hash trên on-chain khớp với ví, indexer và explorer cũng dùng Keccak-256.

Ethereum dùng ở đâu

Function selector là 4 byte đầu của keccak256("transfer(address,uint256)") và các chữ ký chính tắc tương tự. Storage slot cho mapping được suy ra từ keccak256(abi.encode(key, slot)). EIP-55 đảo hoa/thường dựa trên keccak256 của địa chỉ viết thường. Địa chỉ hợp đồng từ CREATE2 là keccak256 over deployer, salt và bytecode.

Cách triển khai chạy

Trang này đi kèm một bộ hoán vị Keccak-f[1600] gọn nhẹ viết bằng JavaScript. Web Crypto không cung cấp Keccak-256. Bạn có thể kiểm chứng bằng cách so sánh với digest đã biết của chuỗi rỗng c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470. Input và output không rời khỏi tab.

Câu hỏi thường gặp

Keccak-256 có giống SHA3-256?
Không. Keccak-256 là bản đệ trình NIST; SHA3-256 thêm hai bit padding trước khi chốt. Cùng input nhưng output khác. Ethereum và EVM dùng Keccak-256 gốc.
Nó xuất hiện ở đâu trong Ethereum?
Function selector, suy ra storage slot, checksum EIP-55, địa chỉ tất định CREATE2 và phần lớn các sơ đồ ký cần digest 256 bit.
Kiểm chứng triển khai thế nào?
Băm chuỗi rỗng và so với c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470. Khác biệt nào cũng cho thấy padding hoặc thuật toán sai.
Cùng input có cho cùng output không?
Có. Keccak-256 là hàm thuần. Cùng dãy byte UTF-8 luôn cho cùng digest 32 byte, dù trình duyệt hay phiên làm việc nào.
Toova có ghi lại input không?
Không. Hash được tính cục bộ trong tab này; chuỗi và digest không đi đâu khác.
Có dùng cho ABI encoding được không?
Tính Keccak-256 trên chữ ký chính tắc của hàm như transfer(address,uint256) — đây là prefix 4 byte mà selector chờ đợi — rồi lấy 4 byte đầu của kết quả.