브라우저 전용 도구

JWT 인코더 및 서명기

편집 가능한 JSON에서 HMAC, RSA, RSA-PSS 또는 ECDSA JWT를 만듭니다.

브라우저에서 로컬 처리 · 업로드 없음 · 계정 불필요

HS는 공유 비밀키, RS·PS·ES는 PEM PKCS#8 개인키가 필요합니다.

운영 비밀키나 개인키를 브라우저 도구에 붙여 넣지 마세요. 운영 환경에서는 유지 관리되는 JWT 라이브러리와 보호된 서버 키 저장소를 사용하세요.

도구 사용 방법

편집 가능한 JSON에서 HMAC, RSA, RSA-PSS 또는 ECDSA JWT를 만듭니다.

샘플로 입력 형식과 메타데이터를 확인한 다음 자신의 값으로 바꾸세요.

개인정보와 안전한 사용

처리는 현재 브라우저 탭 안에서만 이루어집니다. 큰 값은 기기 메모리를 많이 사용할 수 있습니다.

운영 비밀키나 개인키를 브라우저 도구에 붙여 넣지 마세요. 운영 환경에서는 유지 관리되는 JWT 라이브러리와 보호된 서버 키 저장소를 사용하세요.

자주 발생하는 오류

  • 입력이 비어 있거나 손상되었거나 이 도구가 요구하는 형식이 아닙니다.
  • 선택한 모드가 alphabet, 파일 형식 또는 표현 방식과 맞지 않습니다.
  • 인코딩 값과 디코딩 바이트가 함께 존재해 매우 큰 값은 메모리를 소진할 수 있습니다.
  • 변환 성공이 디코딩 콘텐츠의 안전성이나 신뢰성을 보장하지 않습니다.

동일한 명령어

현재 사용하는 런타임이나 셸에서 같은 작업을 할 수 있습니다. 신뢰할 수 없는 입력을 검증하고 바이너리를 터미널에 직접 출력하지 마세요.

Python

import base64, hashlib, hmac, json
b64 = lambda value: base64.urlsafe_b64encode(value).rstrip(b'=').decode()
body = '.'.join([b64(json.dumps(header, separators=(',', ':')).encode()), b64(json.dumps(payload, separators=(',', ':')).encode())])
token = body + '.' + b64(hmac.new(secret, body.encode(), hashlib.sha256).digest())

JavaScript

import { createHmac } from 'node:crypto';
const b64 = value => Buffer.from(JSON.stringify(value)).toString('base64url');
const body = `${b64(header)}.${b64(payload)}`;
const token = `${body}.${createHmac('sha256', secret).update(body).digest('base64url')}`;

Shell

b64url() { openssl base64 -A | tr '+/' '-_' | tr -d '='; }
body="$(printf '%s' "$HEADER" | b64url).$(printf '%s' "$PAYLOAD" | b64url)"
sig=$(printf '%s' "$body" | openssl dgst -sha256 -mac HMAC -macopt "key:$SECRET" -binary | b64url)

표준 및 공식 문서