본문으로 건너뛰기
Toova
모든 도구

Keccak-256 해시

개인정보 보호 설계 — 브라우저에서 모두 처리됩니다

임의의 UTF-8 문자열을 입력란에 넣으면 32 바이트 Keccak-256 다이제스트를 얻습니다. Ethereum 은 이 알고리즘을 EIP-55 체크섬 주소, 함수 셀렉터, 스토리지 슬롯 유도, CREATE2 컨트랙트 주소 등 곳곳에서 사용합니다.

Keccak-256 과 SHA3-256

Keccak-256 은 SHA3 가 되기 전 Keccak 이 NIST 에 제출한 알고리즘이고, 최종 SHA3 표준은 multi-rate 패딩에 두 비트를 추가했기 때문에 같은 입력이라도 SHA3-256 과 Keccak-256 의 결과가 다릅니다. Ethereum 은 지갑, 인덱서, 익스플로러가 모두 Keccak-256 을 쓰도록 일관성을 맞추기 위해 원본 Keccak 을 유지합니다.

Ethereum 에서의 활용

함수 셀렉터는 keccak256("transfer(address,uint256)") 처럼 정규 시그니처의 앞 4 바이트입니다. 매핑의 스토리지 슬롯은 keccak256(abi.encode(key, slot)) 에서 유도되고, EIP-55 는 소문자 주소의 keccak256 을 기준으로 대소문자를 교차합니다. CREATE2 의 컨트랙트 주소는 deployer, salt, bytecode 를 입력으로 한 keccak256 입니다.

구현 동작

이 페이지는 컴팩트한 Keccak-f[1600] 치환을 JavaScript 로 함께 배포합니다. Web Crypto 는 이를 제공하지 않으며, 빈 문자열의 알려진 다이제스트 c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 와 비교해 검증할 수 있습니다. 입력과 출력은 탭 밖으로 나가지 않습니다.

자주 묻는 질문

Keccak-256 은 SHA3-256 과 동일한가요?
아닙니다. Keccak-256 은 NIST 에 제출된 원본이고, SHA3-256 은 최종화 전에 두 비트의 패딩을 추가했습니다. 같은 입력이라도 결과가 다릅니다. Ethereum 과 EVM 은 원본 Keccak-256 을 사용합니다.
Ethereum 의 어디에서 쓰이나요?
함수 셀렉터, 스토리지 슬롯 유도, EIP-55 체크섬, CREATE2 결정적 주소, 256 비트 다이제스트가 필요한 대부분의 서명 스킴에 사용됩니다.
구현을 어떻게 검증하나요?
빈 문자열을 해시하여 c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 과 비교하세요. 다르다면 패딩이나 알고리즘이 잘못된 것입니다.
같은 입력은 같은 출력을 보장하나요?
네. Keccak-256 은 순수 함수이므로 같은 UTF-8 바이트열은 항상 같은 32 바이트 다이제스트를 만듭니다.
Toova 가 입력을 기록하나요?
아니요. 해시는 이 탭에서 로컬로 계산되며 문자열과 다이제스트는 서버로 전송되지 않습니다.
ABI 인코딩에 쓸 수 있나요?
transfer(address,uint256) 같은 정규 시그니처에 대해 Keccak-256 을 계산한 뒤 앞 4 바이트를 취하세요. 이것이 셀렉터가 기대하는 4 바이트 접두사입니다.