Skip to content

SHA-3 해시 생성기 (Keccak SHA3-256)

SHA-3(NIST FIPS 202 Keccak) 해시를 브라우저에서 생성합니다. 64자리 16진수 SHA3-256, js-sha3 지연 로딩. 미전송.

트래킹 없음 브라우저 실행 무료
SHA-3 해싱은 js-sha3 라이브러리를 통해 브라우저에서 실행됩니다. 어떤 데이터도 서버로 전송되지 않습니다.
알고리즘
NIST FIPS 202 CAVP 테스트 벡터 대조로 SHA3-256 정확성 검토 완료; Keccak 대 SHA-3 패딩 구분 검증 완료 — Go Tools 엔지니어링 팀 · May 28, 2026

SHA-3이란 무엇인가요?

SHA-3(Secure Hash Algorithm 3)은 NIST 보안 해시 표준의 세 번째 세대로, 2015년 8월 FIPS 202에서 표준화되었습니다. SHA-1과 SHA-2가 Merkle-Damgård 구조를 기반으로 하는 것과 달리, SHA-3은 스폰지 구조라 불리는 완전히 다른 설계를 사용합니다. NIST가 SHA-2의 암호해독학적 약점이 SHA-3을 자동으로 손상시키지 않도록 의도적으로 선택한 것입니다.

NIST SHA-3 대회(2007~2012): NIST는 2007년 전 세계의 공개 제출물을 요청했습니다. 세 차례의 평가 라운드를 거쳐 64개 후보가 5개 결선 진출자로 좁혀졌습니다: BLAKE, Grøstl, JH, Keccak, Skein. 2012년 10월, STMicroelectronics와 NXP Semiconductors의 Guido Bertoni, Joan Daemen, Michaël Peeters, Gilles Van Assche가 설계한 Keccak이 우승자로 선정되었습니다. 5개 결선 진출자 모두 안전하다고 간주되었으며, NIST가 우선시한 구조적 다양성 때문에 Keccak의 스폰지 기반 설계가 선택되었습니다.

스폰지 구조: SHA-3은 흡수 단계에서 1600비트 상태(Keccak-f[1600] 순열)에 입력을 흡수하고, 짜내기 단계에서 상태에서 출력 비트를 짜냅니다. SHA3-256의 속도/용량 분할은 1088/512비트입니다. 내부 상태 1600비트 중 256비트만 출력에 나타나므로 공격자는 해시로부터 전체 상태를 재구성할 수 없습니다. 이로써 길이 확장 공격이 구조적으로 불가능해집니다. 이것은 전체 내부 상태가 출력에 노출되어 길이 확장 방지를 위해 HMAC가 필요한 SHA-256과 대비됩니다.

SHA-3 대 Keccak — 패딩 차이: NIST는 도메인 분리 패딩을 0x01에서 0x06으로 변경했습니다. 이는 NIST SHA3-256과 원래 Keccak-256이 모든 입력에 대해 다른 64자리 16진수 출력을 만든다는 것을 의미합니다. 이것은 이론적 문제가 아닙니다. 이더리움의 keccak256(FIPS 202 최종 확정 전에 고정됨)이 동일한 문자열에 대해 이 도구의 SHA3-256 출력과 다른 이유입니다. 이더리움 주소 도출에 이 도구를 절대 사용하지 마십시오.

FIPS 202는 네 가지 SHA-3 변형을 정의합니다: SHA3-224(56자리), SHA3-256(64자리), SHA3-384(96자리), SHA3-512(128자리). 이 도구는 SHA3-256을 구현합니다.

라이브러리 참고: SHA-3은 아직 브라우저의 Web Crypto API 사양에 없습니다(crypto.subtle은 SHA-1, SHA-256, SHA-384, SHA-512만 지원). 이 도구는 첫 번째 사용 시 js-sha3 JavaScript 라이브러리(~10 KB gzip)를 지연 로딩합니다. 그 단일 다운로드 후 모든 계산은 브라우저에서 로컬로 실행됩니다.

SHA-3 사용 시점: SHA-2와 구조적 다양성이 필요한 새 프로토콜; HMAC 래퍼 없는 키 MAC(KMAC128/256, NIST SP 800-185); 양자 후 헤지로서의 SHA-2 백업; FIPS 202를 요구하는 시스템. SHA-256을 유지할 때: 범용 라이브러리 지원, 하드웨어 가속(SHA-NI 확장), 기존 프로토콜 호환성, 그리고 SHA-256이 이미 확립된 표준인 대부분의 일상적인 무결성 사용 사례.

// SHA-3 (NIST FIPS 202 SHA3-256) using js-sha3 library
import { sha3_256 } from 'js-sha3';

const hash = sha3_256('Hello, World!');
// → '882f4b6991a775295186a4e3cc5ece9fc0b618c8c3e7a7beafdd0f56f13ae43b'

// Note: this differs from Ethereum's keccak256 for the same input:
// keccak256('Hello, World!') = 'acaf3289d7b601cbd114fb36c4d29c85bbfd5e133f14cb355c3fd8d99367964f'
// The difference is the padding byte: 0x06 (SHA-3) vs 0x01 (original Keccak)

SHA-3 예시

NIST FIPS 202 테스트 벡터 검증

abc
3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532

SHA3-256("abc") = 3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532 — 이것이 공식 NIST FIPS 202 테스트 벡터입니다. 도구에 "abc"를 붙여넣고 이 정확한 출력을 확인하면 NIST SHA-3(원래 Keccak이 아닌)을 계산하고 있는지 검증할 수 있습니다. 이 단일 테스트로 FIPS 준수 SHA-3 구현과 구형 Keccak 패딩 바이트를 사용하는 구현을 구별할 수 있습니다.

Keccak vs SHA-3 구분 — 동일한 입력, 다른 출력

Hello

이 도구(NIST FIPS 202)의 SHA3-256("Hello") = 8ca66ee6b2fe4bb928a8e3cd2f508de4119c0895f22df86f0ab7e30e487e4500. 이더리움의 keccak256("Hello") = 06b3dfaec148fb1bb2b066f10ec285e7c9bf402ab32aa78a5d38e34566810cd2. 동일한 입력, 다른 64자리 16진수 출력입니다. 차이는 패딩 접미사입니다: NIST SHA-3은 0x06을 사용하는 반면 원래 Keccak(이더리움이 2013년에 고정한 것)은 0x01을 사용합니다. 이더리움은 NIST의 2015년 표준화보다 앞서 있으며 영구적으로 FIPS 202 변형과 갈라졌습니다.

양자 후 아카이브 해시

NIST SP 800-57 Part 1 Rev 5 — Recommendation for Key Management

SHA3-256은 양자 컴퓨터에서 그루버 알고리즘에 대해 128비트 프리이미지 저항성을 제공합니다. SHA-256이 양자 공격에 대해 갖는 것과 동일한 효율 보안 수준입니다. 2050년 이후에도 변조 방지 상태여야 하는 데이터에 SHA-3을 SHA-256과 함께 사용하면 심층 방어를 제공합니다. 한 알고리즘의 구조에서 약점이 발견되면(SHA-2의 Merkle-Damgård, SHA-3의 Keccak 스폰지) 다른 것은 안전하게 유지됩니다.

HMAC-SHA3-256 키 인증

POST /api/ledger
{"amount":250000,"from":"acct-A","to":"acct-B"}

HMAC-SHA3-256은 키 메시지 인증을 위한 HMAC-SHA-256의 현대적 대안입니다. SHA-3의 스폰지 구조는 길이 확장 공격에 기본적으로 저항하므로 SHA3-256 키 MAC(KMAC, NIST SP 800-185에 정의)도 안전합니다. 원시 SHA-256과 달리 길이 확장 방어를 위해 HMAC 래퍼가 필요하지 않습니다. 새 고보증 API와 금융 시스템에 HMAC-SHA3-256(또는 KMAC128)은 HMAC-SHA-256보다 더 강력한 아키텍처 보장을 제공합니다.

SHA-3 해시 생성 방법

  1. 1

    입력란에 텍스트 붙여넣기

    텍스트 탭을 선택하고 임의의 문자열을 입력하거나 붙여넣으십시오. SHA3-256 해시가 실시간으로 갱신됩니다. 첫 번째 사용 시 js-sha3 라이브러리(~10 KB)를 가져와 캐시합니다. 첫 번째 해시에서 짧은 지연이 있을 수 있지만 이후 모든 해시는 즉시 처리됩니다.

  2. 2

    64자리 16진수 출력 복사

    해시 결과 옆의 복사 버튼을 클릭하십시오. 64자리 소문자 16진수 문자열이 클립보드에 복사됩니다. 대상 시스템이 대문자를 요구한다면 대문자 토글을 사용하십시오. 이 출력은 FIPS 202 준수 SHA3-256 구현이 만드는 것과 일치하지만, 동일한 입력에 대해 이더리움의 keccak256과는 다릅니다.

  3. 3

    비교 탭으로 검증

    비교 탭으로 전환해 두 SHA3-256 해시를 나란히 붙여넣으십시오. 도구는 타이밍 정보를 누출하지 않는 상수 시간 비교로 일치 또는 불일치를 보고합니다. NIST CAVP 테스트 벡터 검증, 아카이브 매니페스트 확인, 두 SHA3-256 구현이 동일한 출력을 만드는지 확인에 유용합니다.

기술 세부사항

알고리즘: Keccak-f[1600] 스폰지 구조
SHA3-256은 속도=1088비트, 용량=512비트의 스폰지 구조로 Keccak-f[1600] 순열(5×5×64 상태 배열에 대한 theta, rho, pi, chi, iota 연산의 24라운드)을 적용합니다. 입력은 136바이트(1088비트) 블록으로 흡수됩니다. FIPS 202 도메인 구분자는 패딩 전에 0x06을 추가합니다. 구현: NIST FIPS 202(2015) 섹션 6.
출력: 기본 SHA3-256, 64자리 16진수 (FIPS 202는 224/384/512도 정의)
이 도구는 SHA3-256을 출력합니다: 항상 정확히 64자리 16진수(256비트 = 32바이트). NIST FIPS 202는 SHA3-224(56자리), SHA3-384(96자리), SHA3-512(128자리)도 표준화합니다. 모두 동일한 Keccak-f[1600] 순열을 사용하며 속도/용량 분할만 다릅니다. 입력 크기와 관계없이 출력 길이는 고정됩니다.
성능: 지연 로딩된 js-sha3 (~10 KB); 브라우저에서 ~150~400 MB/s
SHA-2 경로(브라우저의 네이티브 Web Crypto API 사용)와 달리 SHA-3은 Web Crypto 사양에 없습니다. 이 도구는 첫 번째 사용 시 js-sha3 라이브러리(~10 KB gzip)를 로드하고 캐시합니다. 일반적인 처리량: JavaScript에서 150~400 MB/s, Web Crypto를 통한 SHA-256의 400~700 MB/s 대비. 텍스트 해싱(킬로바이트)에서는 차이가 감지되지 않습니다.
표준: NIST FIPS 202(2015), NIST SP 800-185(KMAC), NIST IR 8105
FIPS 202(2015년 8월)에서 표준화되었습니다. NIST SP 800-185(2016)는 KMAC128과 KMAC256을 정의합니다. NIST IR 8105는 양자 후 보안 마진을 위한 SHA-3 변형을 권장합니다. 현재 NIST SP 800-131A Rev 2에 따라 2030년 이후까지 모든 보안 강도 수준에 대해 승인되었습니다.

모범 사례

SHA3-256과 이더리움의 keccak256을 혼동하지 말 것
이들은 모든 입력에 대해 다른 출력을 가진 다른 알고리즘입니다. 이 도구는 NIST FIPS 202 SHA3-256(패딩 바이트 0x06)을 계산합니다. 이더리움의 keccak256은 원래 Keccak 패딩(0x01)을 사용합니다. 이더리움 주소 해시, EVM 스토리지 슬롯, Solidity keccak256() 결과를 계산한다면 keccak256 특화 도구가 필요합니다. 이 도구는 그 사용 사례에 잘못된 답을 제공합니다.
SHA-3을 대체가 아닌 SHA-256 옆의 헤지로 사용
SHA-3과 SHA-2는 구조적으로 다른 설계를 사용합니다(스폰지 대 Merkle-Damgård). 이중 해시 매니페스트(SHA-256 + SHA3-256)는 심층 방어를 제공합니다. 한 계열의 구조에서 암호해독학적 약점이 발견되면 다른 것은 안전하게 유지됩니다. 일상적인 사용에는 SHA-256만으로 완전히 충분합니다.
새 키 MAC 설계에는 HMAC-SHA3-256보다 KMAC 선호
NIST SP 800-185는 SHA-3 기반의 목적 빌딩 키 MAC인 KMAC128과 KMAC256을 정의합니다. 스폰지 구조가 기본적으로 길이 확장 면역이므로 KMAC는 HMAC가 안전을 위해 필요로 하는 이중 해싱 래퍼가 필요하지 않습니다. MAC 알고리즘 선택에 유연성이 있는 새 프로토콜에는 KMAC128(128비트 보안) 또는 KMAC256(256비트 보안)이 HMAC-SHA3-256보다 더 깔끔하고 약간 더 효율적입니다.
코드에서 SHA-3 해시 검증 시 상수 시간 비교 사용
코드에서 두 SHA3-256 해시를 비교할 때 항상 상수 시간 동등 함수를 사용하십시오: Node.js의 crypto.timingSafeEqual(), Python의 hmac.compare_digest(), Go의 subtle.ConstantTimeCompare(). 단순 문자열 동등 비교(=== 또는 ==)는 공격자가 예상 해시를 바이트 단위로 재구성할 수 있는 타이밍 정보를 누출합니다. 이는 SHA-3과 다른 모든 해시 함수에도 동일하게 적용됩니다. 이 도구의 비교 탭은 이미 상수 시간 비교를 사용합니다.

SHA-3 자주 묻는 질문

SHA-3은 Keccak과 같은 건가요?
비슷하지만 동일하지 않습니다. SHA-3은 2007~2012년 NIST SHA-3 대회에서 우승한 Keccak 알고리즘을 기반으로 하지만, NIST가 표준화 중에 패딩 규칙을 변경했습니다. 원래 Keccak은 패딩 전에 0x01 접미사 바이트를 추가하고, NIST SHA-3(FIPS 202, 2015)은 0x06을 추가합니다. 이 단일 바이트 차이로 SHA3-256과 Keccak-256은 모든 입력에 대해 다른 64자리 출력을 만듭니다. 알고리즘은 그 외에 구조적으로 동일합니다. 이더리움/블록체인 맥락에서 "Keccak"이라고 하면 거의 항상 NIST SHA-3이 아닌 원래 사전 FIPS 패딩 변형을 의미합니다.
이더리움은 왜 SHA-3이 아닌 keccak256을 사용하나요?
이더리움은 2013~2014년에 설계되어 2015년에 출시되었습니다. NIST가 2015년 8월에 SHA-3을 최종 확정하기 전이었습니다. 이더리움 프로토콜이 고정되었을 때 Keccak 팀의 원래 제안이 참조 구현이었습니다. NIST는 표준화 중에 패딩을 변경했지만 이더리움은 합의를 깨지 않고는 FIPS 202 변형을 소급 채택할 수 없었습니다(모든 노드가 동일한 해시를 계산해야 합니다). 결과: 이더리움의 keccak256은 원래 Keccak 패딩(0x01)을 사용하는 반면 이 도구의 SHA3-256은 NIST FIPS 202 패딩(0x06)을 사용합니다. 이더리움 주소 도출이나 EVM keccak256에 이 도구를 절대 사용하지 마십시오. 잘못된 결과를 얻게 됩니다.
스폰지 구조란 무엇인가요?
스폰지 구조는 SHA-2의 Merkle-Damgård 체이닝에 대한 SHA-3의 대안입니다. 입력을 블록 단위로 실행 해시 상태에 압축하는 대신(Merkle-Damgård), 스폰지는 두 단계를 가집니다: 흡수(입력이 상태의 일부와 XOR되고 Keccak-f[1600] 순열로 혼합) 및 짜내기(출력 비트가 상태에서 읽힘). 핵심 보안 이점: 내부 상태가 출력보다 큽니다. SHA3-256은 1600비트 상태를 사용하지만 256비트만 출력하여 1344비트의 숨겨진 상태를 남깁니다. 공격자가 256비트 출력만 보고는 메시지를 확장할 수 있는 전체 상태를 재구성할 수 없습니다. 이로써 길이 확장 공격이 구조적으로 불가능해집니다. HMAC 없이 길이 확장을 방지하려면 래퍼가 필요한 SHA-256과 다릅니다.
SHA-2 대신 SHA-3을 사용해야 하나요?
기본적으로는 아닙니다. SHA-256과 SHA3-256 모두 현재 안전하고 NIST 승인을 받았습니다. SHA-3은 SHA-2의 구조적 백업으로 설계되었습니다. 두 알고리즘이 완전히 다른 설계(Merkle-Damgård 대 스폰지)를 사용하므로 한 알고리즘의 약점이 다른 것을 자동으로 손상시키지 않습니다. SHA-3 사용 시점: (1) 프로토콜이 명시적으로 요구할 때, (2) HMAC 래퍼 없이 길이 확장 면역성이 필요할 때, (3) 알고리즘 민첩성이 필요한 새 시스템을 구축할 때, 또는 (4) 조직이 SHA-256 옆에 SHA-3 백업 해시를 요구할 때. 일상적인 파일 체크섬과 인증서 지문에는 SHA-256이 더 나은 라이브러리와 하드웨어 지원을 가진 보편적 표준으로 남아 있습니다.
SHA-3은 SHA-256보다 빠른가요?
소프트웨어에서는 일반적으로 더 느립니다. SHA3-256은 브라우저 JavaScript에서 일반적으로 150~400 MB/s를 달성하는 반면, SHA-256은 Web Crypto API(브라우저의 네이티브 C 수준 SHA-2 구현 사용)를 통해 400~700 MB/s를 달성합니다. 전용 하드웨어와 ASIC(예: 맞춤형 보안 칩)에서는 Keccak-f[1600] 순열이 더 잘 병렬화되고 단순한 비트 연산(XOR, AND, 회전)만 사용하기 때문에 SHA-3이 종종 더 빠릅니다. 브라우저 기반 도구에서는 이 성능 차이가 감지되지 않습니다.
이 도구의 SHA-3 해시 길이는 얼마인가요?
이 도구는 SHA3-256을 기본으로 하며, 항상 정확히 64자리 16진수(256비트 = 32바이트, 바이트당 2자리 16진수)를 만듭니다. NIST FIPS 202는 SHA3-224(56자리), SHA3-384(96자리), SHA3-512(128자리)도 정의합니다. 모두 동일한 Keccak-f[1600] 순열을 공유하며 용량/속도 분할과 출력 길이만 다릅니다. 비교: SHA-256도 64자리를 만들지만 동일한 입력에 대해 다른 64자리 문자열입니다.
SHA-3은 양자 저항성이 있나요?
부분적으로. 양자 컴퓨터의 그루버 알고리즘은 어떤 해시 함수든 검색 공간을 제곱근으로 줄여 효율 보안 수준을 절반으로 낮춥니다. SHA3-256은 256비트의 프리이미지 저항성을 가져 양자 공격하에서 128비트로 줄어들지만 현재 근미래 위협 모델에서는 여전히 안전합니다. SHA-2에 대한 중요한 이점: SHA-3의 스폰지 구조는 Merkle-Damgård와 관련이 없으므로 SHA-2의 압축 함수를 대상으로 하는 암호해독 기법의 영향을 받지 않습니다. NIST의 양자 후 지침은 SHA-2와 설계 다양성을 원하는 새 프로토콜에 선호 해시로 SHA-3을 권장합니다.
입력 데이터가 서버로 전송되나요?
아니요. 초기 라이브러리 로드(js-sha3 스크립트를 CDN에서 한 번 가져오기, ~10 KB) 후 모든 해싱은 JavaScript로 브라우저 내부에서 완전히 실행됩니다. 텍스트를 해싱하는 동안 DevTools → 네트워크 탭을 열면 입력 데이터를 전달하는 외부 요청이 전혀 없음을 확인할 수 있습니다. 이 사이트의 SHA-2 도구(브라우저 내장 Web Crypto API 사용)와 달리 SHA-3은 아직 Web Crypto 사양에 없어 JavaScript 라이브러리가 필요합니다. 라이브러리 다운로드가 유일한 네트워크 요청이며 텍스트는 페이지를 떠나지 않습니다.
NIST SHA-3 대회란 무엇이었나요?
NIST는 2007년부터 2012년까지 세 번째 Secure Hash Algorithm 표준을 선택하기 위해 공개 대회를 진행했습니다. SHA-2를 대체하기 위한 것이 아니라(SHA-2는 여전히 안전합니다) SHA-2가 언젠가 깨질 경우에 대비해 해시 알고리즘 환경을 다양화하기 위한 것이었습니다. 64개의 초기 제출물이 5개의 결선 진출자로 좁혀졌습니다: BLAKE, Grøstl, JH, Keccak, Skein. STMicroelectronics와 NXP Semiconductors의 Guido Bertoni, Joan Daemen, Michaël Peeters, Gilles Van Assche가 설계한 Keccak이 2012년 10월 우승자로 선정되어 2015년 8월 NIST FIPS 202로 표준화되었습니다.
SHA-3은 길이 확장 공격에 취약한가요?
아니요 — 설계상. 길이 확장 공격은 Merkle-Damgård 구조(SHA-256, SHA-512, MD5)가 해시 출력에 내부 상태를 노출하여 공격자가 비밀 접두사를 모르고도 해시된 메시지에 데이터를 추가할 수 있다는 점을 악용합니다. SHA-3의 스폰지 구조는 이를 완전히 피합니다. 1600비트 내부 상태가 256비트 출력보다 크므로 출력이 메시지를 확장하기에 충분한 상태를 드러내지 않습니다. 이로써 순수 SHA3-256을 키 MAC 기본 요소(KMAC)로 안전하게 사용할 수 있습니다. 반면 원시 SHA-256을 키 MAC(HASH(key || message))으로 사용하는 것은 HMAC 래퍼 없이는 안전하지 않습니다.