도구스개발

JWT 생성기 (인코더)

헤더·페이로드 JSON과 비밀키를 넣으면 HS256(HMAC-SHA256)으로 서명된 JWT를 만들어 줍니다. 테스트용 토큰을 서버 없이 빠르게 만들 때 씁니다.

헤더 (JSON)

페이로드 (JSON)

비밀키 (HS256)

토큰은 세 조각을 점으로 이은 것뿐입니다. base64url(헤더) + «.» + base64url(페이로드) + «.» + base64url(서명)이고, 서명은 HMAC-SHA256(비밀키, base64url(헤더) + «.» + base64url(페이로드))입니다. 일반 Base64가 아니라 URL에 그대로 넣을 수 있게 +는 -로, /는 _로 바꾸고 끝의 = 패딩은 뗀URL-안전 Base64를 씁니다.
페이로드는 암호화되지 않습니다. base64url로 인코딩만 되어 있어 누구나 디코딩해 읽을 수 있습니다(dev/jwt-decode로 바로 확인해 보세요). 서명은 «내용이 비밀키를 아는 쪽이 만든 것이고 중간에 바뀌지 않았다»는 것만 보장하지, 내용을 숨겨주지 않습니다 — 비밀번호나 개인정보를 페이로드에 담으면 안 되는 이유입니다.
입력한 헤더·페이로드·비밀키는 서버로 전송되지 않고 브라우저의 SubtleCrypto로만 계산됩니다. 비밀키가 민감한 값이라 이 도구는 방문 기록·즐겨찾기·입력값 저장 전부를 하지 않습니다 — 새로고침하면 비워집니다.

사용 방법

  1. 1헤더와 페이로드를 JSON으로 적습니다. 기본값은 jwt.io 예시와 같습니다.
  2. 2HS256 비밀키를 넣습니다.
  3. 3서명된 토큰이 자동으로 나옵니다. 복사 버튼으로 바로 씁니다.

자주 묻는 질문

세 조각을 점(.)으로 이은 것뿐입니다 — base64url(헤더).base64url(페이로드).base64url(서명). 서명은 HMAC-SHA256(비밀키, base64url(헤더)+"."+base64url(페이로드))로 계산됩니다. 세 조각 중 어디 하나만 바뀌어도 서명이 안 맞아 검증에 실패합니다.

URL-안전(URL-safe) Base64를 씁니다. 표준 Base64의 +는 -로, /는 _로 바꾸고, 끝에 붙는 = 패딩은 아예 뗍니다. JWT를 URL 쿼리나 쿠키, HTTP 헤더에 그대로 넣어도 특수문자가 깨지지 않게 하려는 것입니다.

이 도구는 HS256(HMAC-SHA256)만 지원합니다. RS256처럼 공개키/개인키 쌍을 쓰는 비대칭 서명은 개인키를 브라우저에 넣는 것 자체가 위험해서 다루지 않습니다.

테스트·개발 용도로만 쓰세요. 서명은 "이 비밀키를 아는 쪽이 만들었다"는 것만 증명하고 내용을 감추지 않습니다 — 페이로드는 누구나 디코딩해 읽을 수 있어(dev/jwt-decode로 확인해 보세요), 실제 서비스의 비밀키나 개인정보를 이 페이지에 넣으면 안 됩니다.

전송되지 않습니다. 계산은 브라우저의 SubtleCrypto로만 이뤄집니다. 다만 비밀키가 민감한 값이라 이 도구는 방문 기록·입력값 저장 자체를 하지 않습니다 — 새로고침하면 비워집니다.

알아두면 좋은 점

  • 헤더·페이로드는 사용자가 적은 JSON 문자열을 그대로 인코딩합니다. 파싱 후 다시 직렬화하지 않습니다 — 그러면 키 순서가 바뀌어 다른 사람이 같은 문자열로 검증할 때 문제가 될 수 있습니다.
  • 만든 토큰은 테스트용으로만 쓰세요. 운영 환경의 실제 비밀키를 이 페이지에 넣지 마세요.
  • HMAC-SHA256 계산은 src/lib/calc/totp.ts의 SubtleCrypto 래퍼(dev/hmac 계산기와 공유)를 그대로 씁니다. Node crypto(createHmac)로 만든 독립 구현체 및 jwt.io 디버거의 표준 예시 토큰과 대조해 정확성을 확인했습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 5일 · 결과는 참고용 추정치입니다.