サーバーにデータは保存していないため、安全にはご利用頂けます。
🔒 入力内容はサーバーへ送信されず、すべてブラウザ内で処理します。
JWTとは(3つの構造)
JWT(JSON Web Token)は、
ヘッダー・ペイロード・署名の3つを
ドットでつないだ文字列です。
主にログインの認証トークンに使われます。
ヘッダーとペイロードはBase64URLで“エンコード”されただけ。
暗号化ではないので、
誰でもデコードして中身を読めます。
秘密情報をそのまま入れてはいけません。
デコードとエンコードの使い方
上のツールの「デコード・検証」にJWTを貼ると、
ヘッダー・ペイロード・クレーム
(exp / iat / nbf の日時や期限切れ)を解析します。
秘密鍵や公開鍵を入れれば署名の有効・無効も判定。
「エンコード(生成)」タブでは、
アルゴリズムと鍵を指定して
署名付きJWTを作れます。
署名アルゴリズムの違い(HS・RS・ES)
HS256(HMAC)は共通の秘密鍵で署名・検証。
手軽ですが、鍵を知る全員が発行できます。
RS256 / ES256は公開鍵方式。
秘密鍵で署名し、公開鍵で検証します。
検証側に秘密鍵を渡さずに済むので、
配布・マイクロサービス向きです。
各言語でJWTを扱う方法
実装では、自作せず定番ライブラリを使うのが安全です。
JavaScript / Node.js
import jwt from 'jsonwebtoken'
const token = jwt.sign({ sub: '123' }, secret) // 生成(HS256)
const payload = jwt.verify(token, secret) // 検証つきデコード
jwt.decode(token) // 署名検証なしでデコードPython
import jwt # PyJWT
token = jwt.encode({"sub": "123"}, key, algorithm="HS256")
payload = jwt.decode(token, key, algorithms=["HS256"]) # 検証つきJava
// io.jsonwebtoken : jjwt
String token = Jwts.builder().subject("123").signWith(key).compact();
Claims claims = Jwts.parser().verifyWith(key).build()
.parseSignedClaims(token).getPayload();Kotlin
val token = Jwts.builder().subject("123").signWith(key).compact()
val claims = Jwts.parser().verifyWith(key).build()
.parseSignedClaims(token).payloadよくある間違い・注意点
ペイロードにパスワードなどの機密を入れる(中身は丸見え)
署名を検証せずに信用してしまう
alg=noneや alg のすり替えを受け入れる
有効期限(exp)を検証しない
秘密鍵・署名鍵をクライアントに置く
よくある質問
JWTは暗号化されていますか?
いいえ。ヘッダーとペイロードは
Base64URLエンコードされているだけです。
誰でも中身を読めるので、機密は入れないでください。
このツールに貼ったJWTは送信されますか?
送信されません。
デコードも署名検証・生成も、
すべてブラウザ内で処理し、保存もしていません。
HS256とRS256はどちらを使うべき?
単一のサービス内ならHS256で十分。
検証側が複数、鍵を配りたくないなら
公開鍵方式のRS256 / ES256が向いています。
署名の検証には何が必要ですか?
HMAC(HS系)は署名時と同じ秘密鍵。
RSA/ECDSA(RS・ES系)は対応する公開鍵です。
このツールも同じ鍵を入れれば検証できます。
JWTは「読めるが、改ざんは署名で防ぐ」仕組み。
中身の確認とデバッグに、
このページをブックマークして
サッと使ってくださいね。
それではまた!













