해시·ID·난수
Webhook 서명이 다를 때 HMAC 입력 확인하기
사용할 도구
Webhook JSON은 맞아 보여도 서명 검사가 실패할 수 있습니다. HMAC은 의미가 아닌 키와 메시지 바이트의 조합을 계산하므로 키 순서·공백 정리 후 본문은 발신자가 서명한 내용과 다를 수 있습니다. 공개 가능한 연습 키로 맞춰야 할 조건을 확인합니다.
알려진 키·본문으로 계산 경로 확인
SHA-256·16진수, 키 key, 본문 The quick brown fox jumps over the lazy dog를 추가 공백 없이 넣으면 아래 값입니다. 공개 연습 자료라 운영 비밀 키로 쓰면 안 됩니다. 작은 알려진 예시부터 통과시키면 실제 요청 문제와 기본 계산 문제를 분리할 수 있습니다.
f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8일반 SHA-256이나 키+본문 단순 연결의 SHA-256이 아닙니다. 규격이 HMAC-SHA-256이면 그 구성을 써야 합니다. SHA-384·512 여부도 서명 모양으로 추측하지 말고 제공자 규격을 확인하세요.
JSON 정리만 해도 서명 바이트는 달라짐
아래 JSON 의미는 같아도 공백·줄바꿈·키 순서가 HMAC 입력 바이트를 바꿉니다. 검증 전 parse 후 stringify하거나 정리하면 원문이 재현되지 않을 수 있습니다. 원시 본문 서명 규격이면 그 바이트를 보존해 검증해야 합니다.
{"amount":100,"currency":"JPY"}
{ "amount": 100, "currency": "JPY" }LF·CRLF도 다릅니다. HTTP 라이브러리·저장·편집기·복사 중 변화 지점을 찾을 때 바이트 수·16진수가 도움 됩니다. 바이너리를 함부로 텍스트로 바꾸지 마세요. 도구는 파일 원시 바이트와 UTF-8 텍스트 입력을 구분합니다.
같아 보이는 키가 다른 바이트일 수 있음
6b6579가 텍스트 6글자인지 16진수 3byte인지 확인하세요. 후자는 key지만 이 도구 키 칸은 16진수 자동 복원이 아닌 UTF-8 텍스트입니다. Base64 키도 마찬가지라 인쇄된 문자가 같아도 의도한 키 바이트가 아닐 수 있습니다.
임의 바이너리 키를 깨진 문자열로 바꿔 억지로 넣지 마세요. 정확한 바이트를 받는 로컬 구현·제공자 SDK가 필요합니다. 키를 계속 바꾸기보다 발급·저장 형식·읽을 때 복원을 맞추세요. 키 바이트 수는 추가 줄바꿈·복원 누락을 찾는 단서입니다.
서명 대상이 본문만은 아닐 수 있음
일부 규격은 시각·HTTP 메서드·경로·본문을 정해진 순서로 연결합니다. 본문만 넣어서는 일치하지 않으니 구분자·줄바꿈·URL 인코딩·시각 표기를 확인하세요. 이 도구는 임의 Webhook 서명 문자열을 자동 구성하지 않는 범용 HMAC 계산기입니다.
16진수·Base64·Base64url 표기는 다릅니다. 이 화면은 앞의 두 형식이므로 Base64url 비교 시 차이를 고려하세요. sha256= 같은 헤더 접두사는 해시 자체가 아닐 수 있습니다. 규격대로 비교 부분을 정하고 임의로 문자를 지우지 마세요.
HMAC 일치는 수신 검증의 일부
일치해도 새 요청인지 재전송인지 모릅니다. 시각·ID 재전송 방지, 비교 구현, 키 관리는 수신 측 책임이며 계산기로 인증이 완성되지는 않습니다. 알고리즘·키 표기·서명 바이트·출력을 하나씩 고정해 차이를 찾으세요.
문의·채팅에는 운영 키 대신 연습 키·가상 본문으로 재현을 공유하세요. 브라우저 로컬 처리도 화면 공유·클립보드 위험을 없애지는 않습니다. 비밀이 노출되면 화면을 닫는 것으로 끝내지 말고 제공자·조직의 키 교체 절차를 따르세요.
서명한 원문 대신 JSON을 다시 만들지 않았는지 확인하기
JSON을 파싱한 뒤 다시 직렬화해 HMAC을 계산하면 키 순서, 공백, 줄바꿈, 이스케이프 표기가 달라질 수 있습니다. 구조적 일치와 서명 바이트 일치는 다른 검사입니다. 프로토콜이 원문 본문을 서명한다면 그것을 보존해야 합니다. 비교하기 좋게 정리하는 작업이 비교 대상 자체를 바꿀 수 있습니다.
공개된 알려진 키와 짧은 메시지로 시작해 한 조건씩 바꾸세요. 그것도 다르면 알고리즘, 출력 형식, 키 해석을 보고, 알려진 예만 맞으면 실제 바이트와 메시지 조립을 살펴보세요. 비밀 키를 로그에 남기지 말고 인코딩과 길이 같은 비밀이 아닌 정보부터 확인합니다. 이 화면은 키를 UTF-8 문자로 읽으며 16진수를 자동 디코딩하지 않습니다.
MAC이 맞아도 재전송 공격 방어를 검사한 것은 아닙니다. 프로토콜의 시각, nonce, 이벤트 ID 검증과 중복 방지는 수신 앱에서 별도로 필요할 수 있습니다. HMAC은 공유 키 인증 계산이지 본문 암호화가 아닙니다. 서명 디버깅과 안전한 단일 처리를 나누어 설계하세요.