Thêm game tại WuGames.ioTài trợKhám phá kho game trình duyệt miễn phí — chơi ngay, không tải, không đăng ký.Chơi ngay

Keccak / SHA3 Hasher

Công cụ keccak256 online miễn phí: tính function selector 4 byte, hash topic0 sự kiện và địa chỉ checksum EIP-55. Keccak-256/512 và SHA3 ngay trên trình duyệt.

clearXóapasteDán
Hash nhiều chuỗi cùng lúc — dán mỗi chuỗi một dòng, nhận bảng so sánh

Keccak / SHA3 Hasher là gì?

Keccak / SHA3 Hasher là công cụ online miễn phí để tạo hash mật mã sử dụng thuật toán Keccak và SHA3. Keccak-256 là hàm hash được Ethereum sử dụng cho địa chỉ, ID giao dịch và hàm smart contract. SHA3 là phiên bản được NIST chuẩn hóa với một số thay đổi nhỏ.

Công cụ hỗ trợ đầu vào văn bản và hexadecimal, kèm bảng công cụ Solidity/EVM tự động tính function selector 4 byte, topic0 sự kiện 32 byte và địa chỉ checksum EIP-55 trực tiếp từ Keccak-256 — hoàn hảo cho lập trình viên blockchain, kiểm toán viên smart contract và những người đam mê cryptocurrency. Xem thêm Chuyển Đổi Đơn Vị Ethereum, Tạo SHA-512 HashTạo SHA-256 Hash.

Các Thuật Toán Hash Có Sẵn

Thuật ToánKích Thước Đầu RaỨng Dụng
Keccak-256256 bits (32 bytes)Địa chỉ Ethereum, hash giao dịch, function selector
Keccak-512512 bits (64 bytes)Ứng dụng bảo mật cao, mật mã học nâng cao
SHA3-256256 bits (32 bytes)Chuẩn NIST, hash mật mã tổng quát
SHA3-512512 bits (64 bytes)Chuẩn NIST, hash bảo mật tối đa

Sự khác biệt giữa Keccak và SHA3 là gì?

Keccak thắng cuộc thi SHA3 năm 2012, nhưng NIST đã thực hiện một số thay đổi nhỏ trước khi chuẩn hóa thành SHA3 vào năm 2015. Ethereum sử dụng thuật toán Keccak gốc (trước NIST), không phải SHA3 đã được chuẩn hóa. Điều này có nghĩa là keccak256('') ≠ sha3_256('') mặc dù cả hai đều là hash 256-bit. Luôn sử dụng Keccak-256 khi phát triển cho Ethereum.

Tại sao Ethereum sử dụng Keccak-256?

Ethereum chọn Keccak-256 trước khi SHA3 được NIST hoàn thiện. Nó được dùng để: tạo địa chỉ contract từ địa chỉ deployer và nonce, tạo ID giao dịch, hash chữ ký hàm (4 bytes đầu tiên trở thành function selector), và tính toán vị trí storage slot trong smart contract.

Khi nào nên dùng chế độ đầu vào hex?

Sử dụng đầu vào hex khi hash dữ liệu nhị phân như bytecode, lệnh gọi hàm đã mã hóa, hoặc dữ liệu giao dịch raw. Công cụ sẽ chuyển đổi chuỗi hex thành mảng byte trước khi hash. Ví dụ, hash '0x1234' sẽ hash các byte [0x12, 0x34], không phải ký tự văn bản '0x1234'.

Làm sao để xác minh địa chỉ Ethereum?

Để tạo địa chỉ Ethereum: 1) Lấy public key (64 bytes, không bao gồm prefix 0x04), 2) Hash bằng Keccak-256, 3) Lấy 20 bytes cuối (40 ký tự hex), 4) Thêm prefix '0x'. Kết quả là địa chỉ Ethereum. Công cụ này có thể tính bước 2.

Keccak / SHA3 Hasher — Công cụ keccak256 online miễn phí: tính function selector 4 byte, hash topic0 sự kiện và địa chỉ checksum EIP-55. Keccak
Keccak / SHA3 Hasher

Địa chỉ checksum chữ hoa-thường EIP-55 được tạo ra như thế nào?

EIP-55 thêm một checksum chống lỗi gõ nhầm vào địa chỉ Ethereum 20 byte bằng cách trộn chữ hoa và chữ thường. Lấy 40 ký tự hex chữ thường của địa chỉ (không có 0x), tính keccak256 của chuỗi ASCII chữ thường đó, rồi với mỗi ký tự địa chỉ là chữ cái (a-f), chuyển thành chữ hoa khi nibble hex tương ứng của hash bằng 8 trở lên; các chữ số (0-9) giữ nguyên. Ví dụ, địa chỉ 0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed trở thành 0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed. Đây chính là điều bảng công cụ Solidity/EVM tính cho bất kỳ địa chỉ 40 hex nào (hoặc public key chưa nén 128 hex, sẽ được keccak256 trước rồi lấy 20 byte cuối).

Làm sao tính function selector 4 byte và topic0 sự kiện?

Function selector là 4 byte đầu của keccak256 trên chữ ký chuẩn (chỉ kiểu dữ liệu, không có dấu cách hay tên tham số). Ví dụ, keccak256('transfer(address,uint256)') = 0xa9059cbb..., nên selector là 0xa9059cbb — tiền tố 4 byte của calldata transfer trong ERC-20. Topic0 sự kiện là keccak256 đầy đủ 32 byte của chữ ký sự kiện: keccak256('Transfer(address,address,uint256)') = 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, là topic được đánh chỉ mục mà log Ethereum dùng để lọc sự kiện Transfer của ERC-20. Nhập chữ ký ở chế độ Keccak-256 đơn lẻ và bảng công cụ sẽ hiển thị cả hai ngay lập tức.

Sự khác biệt chính xác giữa padding của Keccak và SHA3 là gì?

Cả hai dùng cùng phép hoán vị sponge Keccak-f[1600]; khác biệt duy nhất là byte phân tách miền (domain separation) được thêm khi padding. Keccak gốc (Ethereum dùng) thêm mẫu bit 0x01 rồi đệm bằng 0x80 (pad10*1), trong khi SHA3 của NIST thêm 0x06 (hai bit thêm 01 phân biệt SHA3 với SHAKE và các biến thể Keccak khác) trước cùng pad10*1. Chính byte padding đó là lý do keccak256('') = c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 nhưng sha3_256('') = a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a — cùng hoán vị, padding khác nhau. Luôn chọn Keccak-256 cho mọi công việc Ethereum/Solidity.

Công cụ này có an toàn không?

Có! Toàn bộ quá trình hash, tính function selector/topic và tính checksum EIP-55 diễn ra hoàn toàn trên trình duyệt của bạn sử dụng thư viện JavaScript js-sha3. Không có dữ liệu nào được gửi đến máy chủ. Tuy nhiên, đừng bao giờ hash private key nhạy cảm hoặc bí mật trên bất kỳ công cụ online nào - luôn sử dụng công cụ offline đã được kiểm toán cho các thao tác mật mã nhạy cảm.

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

  • Phát Triển Smart Contract: Tạo function selector (4 bytes đầu của hash keccak256 của chữ ký hàm)
  • Xác Minh Địa Chỉ Ethereum: Tính hash Keccak-256 của public key để tạo địa chỉ
  • Phân Tích Giao Dịch: Hash dữ liệu giao dịch để xác minh ID giao dịch
  • Tạo Event Signature: Tạo hash topic cho Ethereum logs
  • Tính Storage Slot: Xác định vị trí lưu trữ trong mapping và array của Solidity
  • Tính Toàn Vẹn Dữ Liệu: Xác minh tính toàn vẹn file bằng hash chuẩn SHA3 NIST
  • Metadata NFT: Hash metadata để tạo định danh duy nhất cho NFT
  • Xây Dựng Merkle Tree: Tạo hash lá và nút cho Merkle proof