JWT 인코더·생성기 (HS256, RS256, ES256)
비밀 값으로 HS256/384/512, PEM 개인 키로 RS·PS·ES 256/384/512 JSON 웹 토큰을 만들고 서명합니다. iat와 exp를 넣고 결과를 검증합니다.
JSON 웹 토큰은 사용자가 누구인지, 토큰이 언제 만료되는지 같은 클레임을 발급자가 서명한 짧은 문자열에 담습니다. 이 인코더는 브라우저에서 토큰을 만들어 서명합니다. 공유 비밀 값으로 HS256/384/512를, PEM 또는 JWK 형식 개인 키로 RS·PS·ES 256/384/512를 지원합니다. 현재 시각을 iat로 넣고, 정해진 분 뒤의 exp를 더할 수 있으며, 만든 모든 토큰은 보여 주기 전에 검증합니다.
사용 방법
- API가 기대하는 알고리즘을 고르세요.
- 헤더와 페이로드 JSON을 편집하세요. "alg"는 자동으로 채워집니다.
- 공유 비밀 값을 입력하거나, RS·PS·ES 알고리즘이면 개인 키를 붙여 넣으세요.
- 원하면 iat를 지금으로, 만료를 분 단위로 설정한 뒤 토큰을 복사하세요.
계산식
token = Base64URL(header) + "." + Base64URL(payload) + "." + Base64URL(signature over the first two parts)
HS 알고리즘은 SHA-256/384/512 기반 HMAC을 씁니다. RS는 RSASSA-PKCS1-v1_5, PS는 해시 길이만큼의 솔트를 쓰는 RSASSA-PSS, ES는 P-256, P-384, P-521의 ECDSA이며 서명은 원시 r‖s로 씁니다(RFC 7518). JSON은 키 순서를 유지한 채 간결하게 직렬화합니다.
예시
기본 헤더 {"alg":"HS256","typ":"JWT"}, 페이로드 {"sub":"1234567890","name":"John Doe","iat":1516239022}, 비밀 값 "your-256-bit-secret"이면 토큰은 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIi….SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c입니다. 잘 알려진 jwt.io 샘플입니다.
자주 묻는 질문
여기에 개인 키를 붙여 넣어도 안전한가요?
서명은 브라우저의 Web Crypto API로 이루어지며 아무것도 전송되지 않습니다. 그래도 운영 서명 키는 비밀로 다루세요. 여기서는 테스트 키를 쓰고, 실제 토큰은 서버에서 서명하세요.
HS256에서 PEM 키를 거부하는 이유는 무엇인가요?
HS256에는 공유 비밀 값이 필요합니다. 공개 키를 HMAC 비밀 값으로 쓰는 것은 공개 키를 아는 누구나 토큰을 위조할 수 있게 하는 "알고리즘 혼동" 공격이라서 인코더가 거부합니다. 키 쌍에는 RS256이나 ES256을 고르세요.
ES256 토큰은 왜 매번 바뀌나요?
ECDSA와 RSA-PSS 서명은 서명할 때마다 새 무작위 값을 씁니다. 어느 것이든 유효합니다. HS와 RS 토큰은 결정적이라 항상 같습니다.
어떤 알고리즘을 써야 하나요?
한 서비스가 발급과 검증을 모두 한다면 HS256이 간단합니다. 다른 쪽이 토큰을 만들 수는 없고 검증만 해야 한다면 RS256이나 ES256을 쓰세요.
출처
최종 업데이트:
이 입력값이 담긴 페이지 주소: https://kakao.mobile/ko/tools/jwt-encoder/
인용·퍼가기
kakaoCalc. (2026, November 8). JWT 인코더·생성기 (HS256, RS256, ES256). https://kakao.mobile/ko/tools/jwt-encoder/
“JWT 인코더·생성기 (HS256, RS256, ES256).” kakaoCalc, 8 Nov. 2026, kakao.mobile/ko/tools/jwt-encoder/.