SHA-3 해시 생성기 (Keccak SHA3-256)
SHA-3(NIST FIPS 202 Keccak) 해시를 브라우저에서 생성합니다. 64자리 16진수 SHA3-256, js-sha3 지연 로딩. 미전송.
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
입력란에 텍스트 붙여넣기
텍스트 탭을 선택하고 임의의 문자열을 입력하거나 붙여넣으십시오. SHA3-256 해시가 실시간으로 갱신됩니다. 첫 번째 사용 시 js-sha3 라이브러리(~10 KB)를 가져와 캐시합니다. 첫 번째 해시에서 짧은 지연이 있을 수 있지만 이후 모든 해시는 즉시 처리됩니다.
- 2
64자리 16진수 출력 복사
해시 결과 옆의 복사 버튼을 클릭하십시오. 64자리 소문자 16진수 문자열이 클립보드에 복사됩니다. 대상 시스템이 대문자를 요구한다면 대문자 토글을 사용하십시오. 이 출력은 FIPS 202 준수 SHA3-256 구현이 만드는 것과 일치하지만, 동일한 입력에 대해 이더리움의 keccak256과는 다릅니다.
- 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과 같은 건가요?
0x01 접미사 바이트를 추가하고, NIST SHA-3(FIPS 202, 2015)은 0x06을 추가합니다. 이 단일 바이트 차이로 SHA3-256과 Keccak-256은 모든 입력에 대해 다른 64자리 출력을 만듭니다. 알고리즘은 그 외에 구조적으로 동일합니다. 이더리움/블록체인 맥락에서 "Keccak"이라고 하면 거의 항상 NIST SHA-3이 아닌 원래 사전 FIPS 패딩 변형을 의미합니다. 이더리움은 왜 SHA-3이 아닌 keccak256을 사용하나요?
keccak256은 원래 Keccak 패딩(0x01)을 사용하는 반면 이 도구의 SHA3-256은 NIST FIPS 202 패딩(0x06)을 사용합니다. 이더리움 주소 도출이나 EVM keccak256에 이 도구를 절대 사용하지 마십시오. 잘못된 결과를 얻게 됩니다. 스폰지 구조란 무엇인가요?
SHA-2 대신 SHA-3을 사용해야 하나요?
SHA-3은 SHA-256보다 빠른가요?
이 도구의 SHA-3 해시 길이는 얼마인가요?
SHA-3은 양자 저항성이 있나요?
입력 데이터가 서버로 전송되나요?
NIST SHA-3 대회란 무엇이었나요?
SHA-3은 길이 확장 공격에 취약한가요?
관련 도구
모든 도구 보기 →JWT 디코더 (JWT Decoder)
보안 도구
무료 JWT 디코더로 JWT 토큰을 온라인에서 즉시 디코딩. 헤더, 페이로드, 서명, 만료, 클레임 확인. 100% 브라우저 기반 — 토큰이 기기를 떠나지 않음. 가입·추적 없음.
MD5 해시 생성기 · 파일 체크섬 도구
보안 도구
MD5, SHA-256, SHA-1, SHA-512 해시를 온라인에서 무료로 생성합니다. 브라우저에서 텍스트나 파일을 해싱하고 체크섬을 검증하며 결과를 복사할 수 있습니다.
무작위 비밀번호 생성기 (Random Password Generator)
보안 도구
강력한 무작위 비밀번호를 즉시 만드는 무료 온라인 도구. 길이와 문자 종류를 지정해 최대 50개까지 일괄 생성하고 엔트로피 분석을 확인할 수 있습니다.
SHA-1 해시 생성기 (160비트 레거시)
보안 도구
SHA-1 해시를 브라우저에서 무료로 생성합니다. 40자리 16진수 출력, 업로드 없음. Git 지문 조회, 구형 인증서 검사, 마이그레이션 감사용 레거시 도구입니다.
SHA-256 해시 생성기 및 체크섬 도구
보안 도구
SHA-256 해시를 브라우저에서 생성·검증합니다. 64자리 16진수 출력, 파일·텍스트 지원. 가입 불필요, 데이터 미전송.
SHA-384 해시 생성기 (TLS Suite B 해시)
보안 도구
SHA-384 해시를 브라우저에서 생성합니다. 96자리 16진수, 길이 확장 면역, NSA Suite B, TLS AES-256-GCM. 미전송.