HMAC 생성기
HMAC는 대부분의 서명된 웹훅, AWS Signature v4 헤더, 그리고 JWT HS256 토큰의 기반이 되는 알고리즘입니다. 메시지와 비밀 키를 입력하고 해시 계열을 선택하면 이 생성기는 RFC 2104에서 규정한 대로 정확한 HMAC 값을 생성합니다. 이는 백엔드가 전송하려는 데이터를 검증하거나 API로부터 수신한 서명을 재현하는 데 유용합니다.
HMAC을 계산하는 방법
-
1
메시지를 붙여넣으세요
서명할 정확한 바이트, 웹훅 페이로드, 정규화된 요청, 또는 임의의 문자열입니다.
-
2
비밀 키를 입력하세요
텍스트 또는 16진수 형식일 수 있습니다. 생성기는 RFC 규정에 따라 키를 블록 크기에 맞게 패딩하거나 해시 처리합니다.
-
3
해시 알고리즘을 선택하세요
기본값은 SHA-256이며, 기존 시스템과의 호환성이 필요한 경우 SHA-1, SHA-384, SHA-512 또는 MD5를 선택할 수 있습니다.
-
4
서명을 복사하세요
출력은 소문자 16진수 형식으로, 웹훅 설정이나 Authorization 헤더에 바로 붙여넣을 수 있습니다.
HMAC의 내부 원리
HMAC은 일반 해시 함수를 키 기반 구조로 감싸, 키가 없으면 서명을 위조할 수 없도록 합니다.
RFC 2104 레시피
HMAC(k, m) = H((k' ⊕ opad) ∥ H((k' ⊕ ipad) ∥ m))
여기서 k'는 해시 블록 크기에 맞게 패딩된 키이며, opad = 0x5c repeated와 ipad = 0x36 repeated는 패딩 상수입니다.
알고리즘 선택
| 알고리즘 | 블록 크기 | 출력 길이 | 권장 용도 |
|---|---|---|---|
| HMAC-SHA-256 | 64바이트 | 32바이트 | 현대적 기본값, 웹훅 서명 |
| HMAC-SHA-384 | 128바이트 | 48바이트 | 높은 보안이 필요한 API 서명 |
| HMAC-SHA-512 | 128바이트 | 64바이트 | 장기 유효 토큰 |
| HMAC-SHA-1 | 64바이트 | 20바이트 | 레거시 (AWS S3 v2, OAuth 1.0) |
| HMAC-MD5 | 64바이트 | 16바이트 | 레거시 전용; 새 작업에는 사용하지 마십시오 |
HMAC가 사용되는 곳
- GitHub, Stripe, Shopify 웹훅: 헤더
X-Hub-Signature-256,Stripe-Signature등. - AWS Signature v4: 정규화된 요청에 연쇄적으로 적용되는 HMAC-SHA256.
- JWT HS256: 토큰 서명은
HMAC-SHA-256(header.payload, secret)입니다. - 비밀번호 재설정 토큰: user_id, 만료 시간, 사이트 비밀 값을 결합해 생성한 HMAC.
흔한 실수
- 16진수로 인코딩된 키를 먼저 바이트로 디코딩하지 않고 문자열 형태로 전달하는 것.
- 잘못된 페이로드 바이트에 서명하는 것: 일부 웹훅은 공백을 포함한 원시 요청 본문에 서명하고, 다른 웹훅은 정규화된 형식에 서명합니다.
- 서명 비교에 JavaScript나 Python의
==를 사용하는 것; 타이밍 공격을 막기 위해 항상 타이밍 세이프(timing-safe) 비교를 사용하세요.
자주 묻는 질문
거의 항상 메시지 바이트가 서로 다르기 때문입니다. JSON으로 파싱된 본문에 서명하면 공백 문자가 변경되므로, 원시 요청 본문에 직접 서명해야 합니다. 또한 양측에서 키가 동일한 방식(16진수 대 원시 바이트)으로 디코딩되는지 반드시 확인하세요.
네. 키가 해시 블록 크기보다 짧으면 0으로 패딩되고, 길면 먼저 해시 처리됩니다. RFC 2104는 키 길이가 출력 길이(SHA-256의 경우 32바이트) 이상이 되도록 권장합니다.
HMAC는 알려진 MD5 충돌 공격에도 여전히 안전한데, 해당 공격이 HMAC 구조에는 그대로 적용되지 않기 때문입니다. 그럼에도 불구하고 새 코드에는 HMAC-SHA-256을 사용하세요. 도구와 감사자 모두 이를 기대합니다.
네. HMAC을 계산하기 위해 메시지와 비밀 키가 암호화된 HTTPS 연결로 당사 서버에 전송됩니다. 계산에만 사용되며 저장되거나 기록되지 않습니다.
관련 도구
숫자-문자 암호
퍼즐, 수수께끼, 방탈출 단서에 쓰이는 A=1, B=2 암호(A1Z26)로 숫자를 문자로, 문자를 숫자로 변환하세요.
파일 해시 계산기
붙여 넣은 텍스트나 파일 내용의 MD5, SHA-1, SHA-256, SHA-512 해시를 계산하여 다운로드와 파일 무결성을 확인하세요.
비즈네르 암호 인코더
키워드를 사용해 고전 비즈네르 암호로 메시지를 암호화하고 복호화하세요. 라틴 문자 A-Z를 이동하며 대소문자, 공백, 문장 부호를 보존합니다.
Wei → Ether 변환기
Wei를 Ether(ETH)로 부동소수점 반올림 없이 정확하게 변환합니다. 1 ETH = 10^18 Wei.
패스프레이즈 생성기
무작위 일반 단어로 기억하기 쉬운 패스프레이즈를 생성합니다. 단어 수, 구분 문자, 대문자화, 뒤에 붙이는 숫자를 조절할 수 있습니다.
랜덤 API 키 생성기
서버에서 8~128자의 16진수, base64url, 영숫자 API 키 또는 UUIDv4를 생성합니다.
이 도구는 다른 언어로도 제공됩니다
- HMAC-Generator [DE]
- HMAC-generator [SV]
- Générateur HMAC [FR]
- HMAC-generator [NL]
- HMAC Generator [ID]
- Gerador de HMAC [PT]
- Generator HMAC [PL]
- ตัวสร้าง HMAC [TH]
- Bộ tạo HMAC [VI]
- Generador de HMAC [ES]
- HMACジェネレーター [JA]
- مولّد HMAC [AR]
- HMAC Generator [EN]
- Generatore HMAC [IT]
- HMAC Jeneratörü [TR]
- Генератор HMAC [RU]
- HMAC 生成器 [ZH]