HMAC 계산기

비밀 키로 메시지의 HMAC-SHA256 또는 HMAC-SHA512를 입력하는 즉시 계산합니다. 16진수 출력, UTF-8 입력, 빈 메시지도 지원.

입력 내용과 파일은 브라우저 밖으로 전송되지 않습니다

키와 메시지

서명할 메시지(예: 웹훅 본문)를 붙여넣거나 예제를 불러오세요.

비밀 키를 입력하면 입력하는 즉시 HMAC이 계산됩니다.

이 페이지에서

HMAC 계산기는 입력하는 동안 SHA-256 또는 SHA-512로 키 기반 메시지 인증 코드(RFC 2104)를 계산합니다. 웹훅 서명을 확인하거나 API 요청 서명을 재현할 때 쓰며, 키와 메시지는 브라우저 밖으로 나가지 않습니다.

상세 기능

시크릿 키와 메시지를 입력하세요. 둘 다 입력한 그대로 UTF-8 텍스트로 처리됩니다. 키를 누를 때마다, 그리고 알고리즘을 바꿀 때마다 다시 계산되며 결과는 소문자 16진수로 표시됩니다(HMAC-SHA256은 64자, HMAC-SHA512는 128자). 계산은 페이지 안의 Rust/WebAssembly 모듈이 수행합니다.

빈 메시지도 유효한 입력입니다. 키가 key일 때 빈 메시지의 HMAC-SHA256은 5d5d139563c95b5967b9bd9a8c9b233a9dedb45072794cd232dc1b74832607d0로, OpenSSL 등 다른 라이브러리와 같습니다. 키가 없으면 출력은 비어 있습니다. 해시 블록(SHA-256은 64바이트, SHA-512는 128바이트)보다 긴 키는 표준에 따라 먼저 해시됩니다.

키 필드는 텍스트만 받으므로, 서비스가 16진수나 Base64로 주는 시크릿은 그 서비스가 실제로 키로 쓰는 형태 그대로 입력해야 합니다. 결과는 RFC 4231 테스트 벡터로 확인했습니다. 아무것도 저장되지 않으며 새로 고침하면 필드가 비워집니다.

실용적인 예제

대표적인 테스트 벡터: 키 key, 메시지 The quick brown fox jumps over the lazy dog, SHA-256 → f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8.

RFC 4231 테스트 케이스 2: 키 Jefe, 메시지 what do ya want for nothing?, SHA-256 → 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843.

빈 메시지: 키 key와 빈 메시지는 5d5d139563c95b5967b9bd9a8c9b233a9dedb45072794cd232dc1b74832607d0를 내며, printf '' | openssl dgst -sha256 -hmac key와 같습니다.

웹훅 확인: 원본 요청 본문을 메시지로, 웹훅 시크릿을 키로 붙여넣습니다. 제공자가 sha256=<hex> 형태로 보낸다면 16진수 부분만 결과와 비교하세요.

이 도구 사용 방법

  1. 키 입력

    공유 시크릿을 시크릿 키에 입력하거나 붙여넣습니다.

  2. 메시지 입력

    서명된 바이트 그대로를 메시지에 붙여넣거나, 빈 문자열의 HMAC을 구하려면 비워 둡니다.

  3. 알고리즘 선택

    알고리즘에서 SHA-256 또는 SHA-512를 고르면 HMAC 결과가 바로 갱신됩니다(HMAC 계산을 눌러도 됩니다).

  4. 복사 또는 지우기

    복사로 16진수 값을 가져오고, 지우기로 두 필드를 비웁니다.

팁 및 모범 사례

  • 서버가 서명한 바이트를 그대로 사용하세요. JSON 재포맷, 키 순서 변경, 끝에 붙은 줄바꿈 하나로도 HMAC이 바뀝니다.
  • 직접 작성하는 코드에서는 HMAC을 상수 시간으로 비교하세요. 여기서의 눈 비교는 디버깅용입니다.
  • 끝에 공백이나 줄바꿈이 붙은 시크릿은 다른 키입니다. 값이 맞지 않으면 키 필드를 확인하세요.
  • 일반적인 용도에서 HMAC-SHA512가 "두 배 안전"한 것은 아닙니다. 상대방이 기대하는 알고리즘을 쓰세요.
  • 기대값이 Base64라면 16진수 출력과 같은 바이트를 담고 있으니 비교 전에 변환하세요.