예시
입력 (JWT 토큰)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoieXV0aWxzIiwiZXhwIjoxNzgwMDAwMDAwfQ.signature
디코딩 결과 (Header + Payload)
Header: { "alg": "HS256", "typ": "JWT" }
Payload: { "sub": "123", "name": "yutils", "exp": 1780000000 }참고
이 도구는 디코딩만 수행합니다. exp(만료) 값은 Unix 초 단위 — 사람이 읽기 좋게 보려면 unix-timestamp 도구에 붙여 넣으세요. 서명 검증은 서버에서 별도 수행해야 합니다.
사용법 / 자주 묻는 질문
이런 경우 사용하세요
- 쿠키·Authorization 헤더에 박힌 JWT의 header / payload 살펴보기
- exp(만료) · iat(발급) · sub(주체) 클레임 값을 빠르게 확인
- 디버깅 중 iss(발급자) · aud(대상)가 기대와 일치하는지 검증
- 백엔드가 사용한 알고리즘(alg) · 키 ID(kid) 확인
- 프론트엔드에서 토큰 모양을 시각적으로 검증 (서명 검증은 별도)
자주 묻는 질문
- Q.서명 검증도 해주나요?
- A.아닙니다. 서명 검증은 공개키가 필요하며 외부 도구에 키를 붙여넣는 것은 권장하지 않습니다. yutils는 디코딩만 수행합니다. 검증은 서버 또는 `jose` 같은 라이브러리로 직접 수행하세요.
- Q.토큰이 어딘가로 전송되나요?
- A.아닙니다. 모든 디코딩은 브라우저에서만 처리됩니다. 토큰이 yutils 서버나 외부 API로 나가지 않습니다.
- Q.누구나 디코딩할 수 있는데 JWT가 어떻게 안전한가요?
- A.JWT payload는 원래 읽을 수 있도록 설계됐습니다. 보안은 서명에서 옵니다 — 서버의 비밀 키만이 유효한 서명을 만들 수 있기 때문입니다. 따라서 민감 정보는 절대 payload에 넣지 마세요.
재미있는 사실
JWT의 공식 발음은 'jot'입니다. RFC 7519 §1에 정확히 박혀 있습니다 — "JWTs are pronounced 'jot'". 하지만 현장에서는 다들 J·W·T라고 부르는 중. RFC 작성자들도 결국 받아들인 듯합니다.
RFC 7519 §1초기 JWT 라이브러리들은 `alg: none` 알고리즘을 받아들였습니다. 토큰을 만든 사람이 "서명 없음"이라고 헤더에 박으면 서버가 검증을 건너뛰는 구조. 2015년 이 결함으로 수많은 서비스가 누구나 발급 가능한 admin 토큰에 노출됐고, 이후 대부분의 라이브러리가 `none`을 거부하는 default로 바뀌었습니다.
Auth0 — JWT none 취약점JWT payload는 암호화가 아니라 인코딩일 뿐입니다 — 누구나 Base64URL로 디코드해 내용을 읽을 수 있어요. 그래서 비밀번호·신용카드번호 같은 민감 정보를 절대 payload에 넣으면 안 됩니다. JWT의 보안은 "서명을 위조할 수 없다"에서 옵니다.
RFC 7519
관련 도구
- Base64 인코딩 / 디코딩
텍스트를 Base64로 인코딩하거나 디코딩합니다. 브라우저에서 즉시 실행되며 서버로 데이터가 전송되지 않습니다.
- URL 인코딩 / 디코딩
URL에 사용할 수 있도록 텍스트를 퍼센트 인코딩하거나 인코딩된 URL을 디코딩합니다. 브라우저에서 즉시 실행됩니다.
- UUID / ULID 생성기
UUID v4(랜덤) · UUID v7(시간 순서, RFC 9562) · ULID를 브라우저에서 생성합니다.
- JWT 생성기 (HMAC)
HS256/HS384/HS512(HMAC-SHA) 알고리즘으로 서명된 JWT를 생성합니다. payload·secret 모두 브라우저에서만 처리 — Web Crypto API 기반.
- SHA 해시
텍스트의 SHA-1·SHA-256·SHA-384·SHA-512 해시를 계산합니다. 브라우저의 Web Crypto API를 사용하며 데이터가 서버로 전송되지 않습니다.
- Hex 인코딩 / 디코딩
텍스트를 16진수로 인코딩하거나 디코딩합니다. UTF-8을 자동 처리하며 공백을 무시합니다.
- HTML 엔티티 인코딩 / 디코딩
HTML 특수 문자(&, <, >, ", ')를 엔티티로 인코딩하거나, 이름/숫자 엔티티를 텍스트로 디코딩합니다.
- 비밀번호 생성기
암호학적으로 안전한 비밀번호·토큰·랜덤 문자열·패스프레이즈를 생성하고 엔트로피를 표시합니다.
- 진수 변환기
BigInt 기반으로 큰 정수까지 2/8/10/16/36진수 변환. 0b/0o/0x 자동 감지.
- URL 파서
URL을 프로토콜·호스트·경로·쿼리·해시로 분해해 한눈에 보여줍니다 (읽기 전용).
- HMAC 생성기
Web Crypto API로 SHA-1/256/384/512 HMAC을 계산합니다. 서명·검증 키 기반.
- HMAC 검증기
주어진 HMAC 서명이 message + secret 으로 만든 값과 일치하는지 검증합니다. Web Crypto API + constant-time 비교.
- MD5 해시
텍스트의 MD5 해시를 계산합니다. 주의: MD5는 보안용으로 부적합 — 체크섬·레거시 호환에만 사용.
- Punycode (국제화 도메인)
한글·다국어 도메인을 Punycode(xn-- ASCII)로 상호 변환합니다. 브라우저 native URL 사용.
- HTTP 상태 코드
HTTP 상태 코드(1xx-5xx)를 검색·탐색합니다. 설명과 일반 사용 사례 포함.
- User-Agent 파서
User-Agent 문자열을 브라우저·OS·기기·엔진별로 분해합니다.
- Bcrypt 해시
Bcrypt로 비밀번호를 해시하거나 기존 해시와 평문을 검증합니다. salt rounds 조정 가능.
- 쿠키 파서
Cookie 또는 Set-Cookie 문자열을 표로 분해합니다. percent-encoded 값 복원 + Set-Cookie 속성(Path/Domain/Max-Age/SameSite/HttpOnly/Secure) 인식.
- IP / CIDR 계산기
IPv4 주소와 CIDR로 네트워크 주소·브로드캐스트·호스트 범위·서브넷 마스크·호스트 수를 계산합니다.
- cURL 빌더
URL·method·헤더·본문으로 cURL 명령을 만듭니다. JSON content-type 자동.