예시
입력 (Payload + Secret + 알고리즘)
Payload:
{ "sub": "123", "name": "Alice", "exp": 1815000000 }
Secret: your-256-bit-secret
Algorithm: HS256출력 (서명된 JWT)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiQWxpY2UiLCJleHAiOjE4MTUwMDAwMDB9.q3w...
참고
Web Crypto API 의 HMAC-SHA 사용. 같은 입력이면 항상 같은 토큰 — 결정적. secret 만 안전하게 보관하면 외부에서 위조 불가능.
사용법 / 자주 묻는 질문
이런 경우 사용하세요
- API 인증 토큰 빠르게 발급 (테스트·로컬 환경)
- JWT Decoder 로 디버깅하다 동일 secret 으로 재서명
- 백엔드 라이브러리 없이 단일 토큰 빠르게 발급
- exp · sub · role 같은 claim 직접 설정해 권한 테스트
- HS256 ↔ HS384 ↔ HS512 알고리즘별 결과 비교
자주 묻는 질문
- Q.RS256(공개키·비공개키)도 지원되나요?
- A.현재 HS256/384/512(HMAC) 만 지원합니다. RS256·ES256 같은 비대칭 알고리즘은 PEM 키 파싱이 필요해 별도 도구로 분리 검토 중. HMAC 은 단일 비밀로 서명·검증 모두 처리하므로 단순 용도엔 충분.
- Q.secret 이 외부로 전송되나요?
- A.아닙니다. Web Crypto API 의 `crypto.subtle.importKey` + `subtle.sign` 모두 브라우저에서만 동작 — secret · payload · 결과 토큰 어느 것도 yutils 서버나 외부 API 로 나가지 않습니다.
- Q.production 비밀번호로 써도 되나요?
- A.테스트 · 로컬 디버깅 목적에 적합합니다. production secret 을 브라우저 도구에 붙여 넣는 것은 일반적으로 권장하지 않아요 — 클립보드 / 브라우저 확장 등 노출 surface 가 있습니다. 실제 발급은 백엔드에서.
재미있는 사실
JWT 사양 RFC 7519 는 알고리즘 'none' 을 정의했고, 이게 2015 년 Auth0 가 발견한 대량 취약점의 원인이 됐습니다 — 다수 JWT 라이브러리가 서버가 받은 JWT 의 alg 헤더를 'none' 으로 바꾸면 서명 검증을 통과시키는 결함을 가지고 있었습니다. 이후 라이브러리들이 default 로 'none' 을 차단.
Auth0 — JWT vulnerabilities (2015)HS256 (HMAC-SHA256) 은 비밀키를 발급자·검증자 양쪽이 똑같이 알아야 합니다. RS256 (RSA) 은 private/public 분리 — 발급자만 private 키로 서명하고 검증자는 public 키로 확인. 서비스가 여러 곳에서 토큰을 검증한다면 RS256 권장.
RFC 7518 — JOSE AlgorithmsJWT payload 는 base64url 인코딩일 뿐 암호화가 아닙니다 — 누구나 디코딩해서 평문으로 볼 수 있습니다. 서명은 '변조 방지'를 보장하지만 '내용 비밀'은 보장하지 않으므로, 비밀번호·주민번호 같은 PII 를 payload 에 박지 마세요.
Auth0 — JWT Claims
관련 도구
- Base64 인코딩 / 디코딩
텍스트를 Base64로 인코딩하거나 디코딩합니다. 브라우저에서 즉시 실행되며 서버로 데이터가 전송되지 않습니다.
- URL 인코딩 / 디코딩
URL에 사용할 수 있도록 텍스트를 퍼센트 인코딩하거나 인코딩된 URL을 디코딩합니다. 브라우저에서 즉시 실행됩니다.
- UUID / ULID 생성기
UUID v4(랜덤) · UUID v7(시간 순서, RFC 9562) · ULID를 브라우저에서 생성합니다.
- JWT 디코더
JWT(JSON Web Token)의 header와 payload를 디코딩하여 표시합니다. 서명 검증은 수행하지 않으며(공개키 필요), 토큰은 브라우저에서만 처리됩니다.
- 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 자동.