Toolonit
  1. 홈
  2. 암호화
  3. HMAC 서명

HMAC 생성·검증

비밀 키로 HMAC-SHA256 등 메시지 인증 코드를 만들고 검증합니다.

0바이트
키 형식
알고리즘
출력 형식
HMAC-SHA-256비밀 키를 입력하면 HMAC이 나옵니다.

선택 사항. GitHub의 X-Hub-Signature-256 헤더 값(sha256=…)을 그대로 붙여 넣어도 됩니다.

HMAC은 메시지와 공유된 비밀 키로 만드는 서명입니다. 키를 가진 사람은 같은 값을 다시 계산할 수 있고, 메시지나 키가 조금만 달라도 값이 완전히 바뀝니다. 웹훅(GitHub, Stripe, Slack), API 요청 서명, JWT HS256 토큰이 모두 HMAC을 씁니다. 입력하는 대로 HMAC이 바로 나오고, 받은 서명을 붙여 넣어 검증할 수 있습니다. 브라우저에 내장된 Web Crypto로 계산하므로 메시지와 키가 기기 밖으로 나가지 않으며, 무료이고 가입도 필요 없습니다.

HMAC 만들고 검증하는 방법

  1. 서명된 그대로의 메시지를 붙여 넣습니다. 웹훅이라면 가공하지 않은 요청 본문입니다.
  2. 비밀 키를 입력하거나 생성을 눌러 무작위 키를 만듭니다. 키를 16진수 바이트로 받았다면 16진수를 고릅니다.
  3. 알고리즘을 고르고(따로 정해진 게 없으면 SHA-256) 결과를 16진수나 Base64로 복사합니다.
  4. 서명을 검증하려면 서명 검증 칸에 붙여 넣습니다. GitHub의 sha256=… 헤더 값을 그대로 넣어도 됩니다.

주요 기능

  • HMAC-SHA1, HMAC-SHA256, HMAC-SHA384, HMAC-SHA512
  • 비밀 키는 텍스트(UTF-8)나 16진수로, 또는 생성 버튼으로 무작위 32바이트 키
  • 결과는 16진수나 Base64, 입력하는 대로 바로 계산
  • 받은 서명을 16진수나 Base64(URL-safe 포함)로 검증, GitHub sha256=·Slack v0= 접두사도 그대로
  • 서명 길이가 다른 알고리즘의 것이면 알려 주고 버튼 하나로 전환
  • 브라우저에 내장된 Web Crypto로 계산

개인정보는 안전한가요?

네. HMAC은 브라우저에 내장된 Web Crypto가 계산하며, 메시지와 비밀 키는 이 페이지 안에만 있고 업로드하거나 저장하지 않습니다.

자주 묻는 질문

GitHub 웹훅 서명은 어떻게 검증하나요?

가공하지 않은 요청 본문을 메시지에, 웹훅 비밀 값을 텍스트 키에, X-Hub-Signature-256 헤더 값을 서명 검증 칸에 넣으면 됩니다. GitHub는 sha256= 뒤에 본문의 HMAC-SHA256을 16진수로 보내며, 접두사는 그대로 읽습니다.

JWT HS256 서명은 어떻게 검증하나요?

토큰에서 두 번째 점 앞까지(헤더.페이로드)를 메시지에, 비밀 값을 키에 넣고 SHA-256을 고른 뒤, 토큰의 세 번째 부분을 서명 검증 칸에 붙여 넣으세요. URL-safe Base64도 그대로 읽습니다.

서명이 일치하지 않는 이유는 무엇인가요?

메시지가 서명된 내용과 바이트 단위로 같아야 합니다. JSON을 다시 정렬하거나, 끝의 줄바꿈이 빠지거나 더해지거나, Windows 줄바꿈(CRLF)이면 HMAC이 달라집니다. 여기에 입력한 텍스트는 LF 줄바꿈을 씁니다. 알고리즘과 키 형식(텍스트/16진수)도 확인하세요.

OpenSSL과 같은 결과가 나오나요?

네. printf '%s' '메시지' | openssl dgst -sha256 -hmac '키'가 같은 16진수 값을 출력하고, 16진수 키는 -mac HMAC -macopt hexkey:…와 같습니다. echo는 줄바꿈을 붙여 함께 서명되므로 printf나 echo -n을 쓰세요.

HMAC-SHA1은 아직 안전한가요?

HMAC으로 쓸 때는 현실적으로 안전합니다. 알려진 SHA-1 충돌로 HMAC-SHA1이 깨지지는 않아서 오래된 웹훅이 아직 씁니다. 새로 만드는 시스템이라면 HMAC-SHA256을 고르세요.

관련 도구