HMAC 생성기
브라우저 처리비밀 키와 메시지로 HMAC-SHA256·384·512 서명을 만들고, 웹훅에서 받은 서명(sha256=… 등)과 일치하는지 바로 확인합니다. 키는 텍스트·16진수·Base64로 넣을 수 있고 결과는 소문자 16진수나 Base64로 나옵니다.
- 보안·인코딩·토큰·네트워크 관련 결과는 작업 보조용입니다. 비밀번호, 비밀키, 운영 토큰, 실제 서비스 취약점 정보는 입력하지 말고 공식 보안 기준을 함께 확인하세요.
GitHub·Stripe·Slack·Shopify 같은 서비스는 웹훅 요청이 진짜인지 확인할 수 있도록 본문을 비밀 키로 HMAC 서명해 헤더에 넣어 보냅니다. 연동을 개발하다 서명 검증이 계속 실패하면, 같은 키와 본문으로 서명을 직접 만들어 비교해 보는 것이 가장 빠른 확인 방법입니다.
f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
HMAC 생성기 사용 가이드
GitHub·Stripe·Slack·Shopify 같은 서비스는 웹훅 요청이 진짜인지 확인할 수 있도록 본문을 비밀 키로 HMAC 서명해 헤더에 넣어 보냅니다. 연동을 개발하다 서명 검증이 계속 실패하면, 같은 키와 본문으로 서명을 직접 만들어 비교해 보는 것이 가장 빠른 확인 방법입니다.
이 도구는 브라우저의 Web Crypto API로 HMAC-SHA256, SHA-384, SHA-512를 계산합니다. 결과는 대부분의 웹훅이 쓰는 소문자 16진수나 Base64로 보여 줍니다. '받은 서명' 칸에 헤더 값을 넣으면 sha256=, v0= 같은 접두사를 떼고 16진수·Base64·URL-safe Base64 어느 형식이든 일치 여부를 알려 줍니다.
비밀 키는 텍스트(UTF-8)뿐 아니라 16진수나 Base64로 받은 키도 바이트로 바꿔 씁니다. 같은 키라도 형식을 잘못 고르면 전혀 다른 서명이 나오므로 키 형식을 먼저 확인하세요.
사용 방법
- '알고리즘'(보통 SHA-256)과 '출력 형식'(HEX 또는 Base64)을 고릅니다.
- '비밀 키 형식'을 고르고 '비밀 키'에 키를 넣습니다.
- '메시지'에 서명할 원문(웹훅 본문 그대로)을 붙여 넣고, 비교할 서명이 있으면 '받은 서명'에 넣습니다.
- 'HMAC 생성'을 누르면 결과와 함께 받은 서명과의 일치 여부가 상태 줄에 나옵니다.
예시: 표준 시험 벡터로 확인
알고리즘: SHA-256 · 키(텍스트): key 메시지: The quick brown fox jumps over the lazy dog
f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
널리 알려진 HMAC-SHA256 시험 값과 같은 결과입니다.
이럴 때 쓰면 좋아요
- 웹훅 서명 검증 코드가 실패할 때 기대 서명을 직접 계산해 비교할 때
- API 요청 서명(HMAC 인증)을 구현하며 중간 값을 확인할 때
- 결제 연동 테스트에서 받은 서명이 맞는지 확인할 때
- HMAC 개념을 배우며 키·메시지에 따른 결과 변화를 볼 때
문제가 생겼을 때
가장 흔한 원인은 메시지가 원문과 다른 경우입니다. JSON을 정렬·들여쓰기하면 다른 바이트가 되니, 받은 본문 그대로(공백·줄바꿈 포함) 넣으세요. 그다음 키 형식과 알고리즘을 확인합니다.
16진수 키는 두 글자씩 짝이 맞아야 합니다. 텍스트 키를 넣은 것이라면 '비밀 키 형식'을 텍스트로 바꾸세요.
Slack은 'v0:타임스탬프:본문'을 이어 붙인 문자열에 서명합니다. 메시지 칸에 그 형식 그대로 넣어야 합니다.
활용 팁
- 운영 환경의 실제 비밀 키는 공용 컴퓨터에서 입력하지 말고, 테스트용 키로 먼저 확인하세요.
- 서버 코드에서는 서명을 비교할 때 일반 == 대신 상수 시간 비교 함수(timingSafeEqual 등)를 쓰세요.
- 단순 무결성 확인(키 없이)이 목적이라면 해시 생성기의 SHA-256을 쓰면 됩니다.
자주 묻는 질문
GitHub(X-Hub-Signature-256)·Stripe 등 대부분의 웹훅이 소문자 16진수를 쓰기 때문입니다. 16진수는 대소문자만 다를 뿐 값은 같고, 받은 서명 비교는 대소문자를 가리지 않습니다.
Web Crypto API가 안전한 SHA-2 계열만 제공해 SHA-256·384·512를 지원합니다. 오래된 시스템의 HMAC-SHA1은 서버 쪽 도구로 확인하세요.
아니요. 계산은 이 브라우저 안에서만 하고 키와 메시지는 어디에도 전송하거나 저장하지 않습니다.
계산·판단 기준
- 입력 문자열, 토큰, 해시, 인코딩 값, 네트워크 형식처럼 사용자가 제공한 데이터를 브라우저에서 변환하거나 점검합니다.
- 보안 관련 도구는 개발과 학습을 돕기 위한 참고 결과를 만들며 운영 환경 검증을 대신하지 않습니다.
- 실제 비밀번호, 개인 키, 운영 토큰, 고객 정보, 취약점 상세처럼 노출되면 위험한 값은 입력하지 마세요.
- 해시, 토큰, 인코딩 결과는 보안성 보장이나 침해 여부 확인을 의미하지 않습니다.
- 운영 보안 판단 전에는 조직 보안 정책, 공식 문서, 전문 보안 점검 절차와 함께 확인하세요.
- 공식 외부 출처OWASP Cheat Sheet Series웹 보안 구현과 검증을 위한 실무 권고 모음입니다.
검토 범위: 입력, 실행, 결과 표시가 설명대로 동작하는지 자동으로 점검하지만 모든 입력 형식과 사용 환경을 보장하지는 않습니다. 결과를 제출하거나 공유하기 전에 직접 열어 확인하세요.