HMAC 생성기이란?

HMAC 생성기는 비밀 키와 해시 알고리즘(SHA-256, SHA-512 등)을 사용하여 키 기반 해시 메시지 인증 코드를 생성합니다. HMAC은 데이터 무결성과 진위성을 모두 검증하며, API 인증, 웹훅 서명, JWT 토큰에 일반적으로 사용됩니다.

HMAC는 비밀 키를 해시에 섞어 넣으므로, 그 키를 아는 사람만 서명을 검증할 수 있습니다. SHA-1·SHA-256·SHA-384·SHA-512를 지원하고 출력은 16진수, Base64, Base64URL 또는 원시 바이너리 중에서 고를 수 있습니다. 또한 GitHub, Stripe, Slack, Shopify 웹훅을 위한 원클릭 프리셋이 있어 올바른 알고리즘과 헤더 접두사를 자동으로 채웁니다. 메시지는 일반 텍스트로 입력하거나 16진수, Base64, Base64URL로 이미 인코딩된 상태로 붙여넣을 수 있으며, 서명 전에 원시 바이트로 디코딩됩니다. 실시간 바이트 수 표시가 프로덕션에 안전한 32바이트보다 짧은 키를 알려 주고, 입력에 맞춰 서명이 다시 계산되며, 검증란은 이들 제공자가 보내는 sha256= 또는 v0= 접두사도 허용합니다. 메시지와 키는 모두 사용자 기기에서 처리됩니다.

사용 방법

  1. 1단계 — 메시지와 비밀 키를 입력합니다.
  2. 2단계 — 웹훅 프리셋(GitHub, Stripe, Slack, Shopify)을 고르거나, 해시 알고리즘(SHA-1, SHA-256, SHA-384 또는 SHA-512)과 출력 인코딩(16진수, Base64, Base64URL 또는 바이너리)을 직접 설정합니다. 이미 인코딩된 페이로드를 붙여넣으려면 메시지 입력을 16진수나 Base64로 전환하세요.
  3. 3단계 — 생성된 HMAC 서명을 복사하여 API 헤더나 웹훅 검증에 사용합니다.

사용 시기

  • 수신 측이 출처와 무결성을 검증할 수 있도록 웹훅 페이로드에 서명할 때.
  • AWS Signature Version 4 같은 API 인증 방식에 필요한 요청 서명을 만들 때.
  • HS256, HS384, HS512 알고리즘으로 JWT 서명을 생성할 때.

결과

결제 API에서 HMAC-SHA256으로 서명된 요청이 필요합니다. 요청 본문을 메시지로, API 시크릿을 키로 입력하고, 생성된 서명을 X-Signature 헤더에 복사하세요.

자주 묻는 질문

HMAC와 message+key를 그냥 SHA-256으로 한 번 해시한 것이 다른 점은?
HMAC는 안쪽과 바깥쪽에 패딩한 키를 쓰는 이중 해시 구조입니다. 이 구조 덕분에 SHA-1이나 SHA-256 기반의 단순 hash(key‖message) 방식이 취약한 길이 확장 공격을 막을 수 있습니다.
출력은 hex와 Base64 중 무엇을 쓰나요?
API나 웹훅 제공자가 요구하는 형식에 맞추세요. HTTP 헤더에는 hex가 흔하고(Stripe, GitHub), JSON 본문과 JWT에는 Base64가 흔합니다. 같은 서명이고 인코딩만 다릅니다.
비밀 키의 길이는 얼마나 되어야 하나요?
최소 32바이트(256비트)의 임의 데이터, 가급적 암호학적 난수원에서 얻은 값이 좋습니다. 너무 짧으면 보안이 약해지고, 해시 블록 크기(SHA-256은 64바이트)보다 길게 잡아도 HMAC 내부에서 다시 압축하므로 의미가 없습니다.
API가 보낸 서명과 내가 계산한 서명이 다른 이유는?
대부분 서명 대상 문자열이 다른 게 원인입니다. 공백, 줄바꿈, 쿼리 파라미터 순서, URL 인코딩, 타임스탬프 포함 여부까지 모두 영향을 줍니다. 제공자의 서명 레시피를 바이트 단위로 재현하세요.
HMAC-SHA1은 지금도 안전한가요?
신규 시스템에서는 HMAC-SHA256 이상을 권장합니다. HMAC 구조 자체가 충돌 저항에 의존하지 않으므로 HMAC-SHA1은 기술적으로 여전히 안전하지만, 장기적으로는 SHA-1에서 완전히 벗어나는 편이 무난합니다.

관련 도구