Keccak256 是一种加密哈希函数,是以太坊(Ethereum)系统里最常用的哈希算法。它与 SHA3-256、hash256 的区别是 ...
Keccak256 是一种 加密哈希函数,是以太坊(Ethereum)系统里最常用的哈希算法。
bytes4(keccak256(bytes(_func)));
函数选择器 = keccak256("transfer(address,uint256)") 的前 4 字节。
keccak256(abi.encodePacked(msg.sender, amount))
如 EIP-1967 里存储槽都用 keccak256 计算。
keccak256("hello")
输出类似:
0x06d…(64个十六进制字符)
| 名称 | 使用者 | 算法 | 是否等同 |
|---|---|---|---|
| keccak256 | 以太坊、Solidity | Keccak(旧版) | ❌ 不等同 SHA3-256 |
| SHA3-256 | NIST 标准、OpenSSL | Keccak(标准化版) | ❌ 与 keccak256 有差异 |
| hash256 | 比特币 | SHA-256 两次 | ❌ 与上述两者完全无关 |
历史原因。以太坊开发时(2014 年),SHA-3 标准还没最终确定。
他们使用了当时的 Keccak(旧版本)。后来 NIST 改了一点点 padding,导致:Keccak-256 != SHA3-256。再改就会影响链上数据,所以以太坊只能继续用旧版本。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!