本文へスキップ
OpsKit

Base64 エンコーダー / デコーダー

テキストを Base64 に変換し、また戻します。日本語のような非 ASCII 文字を正確に扱い、JWT が使う URL セーフな文字集合に対応し、中身がテキストでなくバイナリのときは黙って壊さずそのことを伝えます。

出力

すべてブラウザ内で処理されます. このページは静的ファイルです。入力した内容はタブの中だけに留まり、サーバーへ送信されることはなく、閉じれば消えます。実際のトークンや設定を貼り付けても安全です。

こんなときに使います

  • Kubernetes Secret を確認するとき。kubectl get secret はすべての値を Base64 で表示します。
  • 小さな画像や証明書を設定ファイル・環境変数・data URI に埋め込むとき。
  • Authorization ヘッダーや Webhook のペイロード、JWT の一部など Base64 で届いた値を開くとき。

実例

通常の ASCII

入力
hello world
結果
aGVsbG8gd29ybGQ=

末尾の = はパディングであり、データの一部ではありません。

日本語テキスト

入力
こんにちは
結果
44GT44KT44Gr44Gh44Gv

ひらがな 1 文字が UTF-8 で 3 バイトになります。btoa() をそのまま使うツールはここで例外を投げます。

JWT ヘッダーで使う URL セーフ形式

入力
{"alg":"HS256","typ":"JWT"}
結果
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

パディングも + も / もないため、URL にそのまま入れても壊れません。

よくある間違い

Base64 を暗号化だと思い込む

誰でも元に戻せる符号化にすぎません。Kubernetes Secret は Base64 で符号化されているだけで保護されてはいません。脅威モデル上は平文として扱うべきです。

URL セーフな値を標準デコーダーに渡す

JWT の各部分は - と _ を使いパディングがありません。厳密な標準デコーダーはこれを拒否します。文字集合を変換し、長さを 4 の倍数に補ってから復号してください。

末尾の改行 1 文字で値が変わる

echo "secret" | base64 は末尾の改行まで符号化します。値を厳密に一致させたいときは echo -nprintf を使ってください。

よくある質問

エンコードすると長くなるのはなぜですか?

Base64 は 3 バイトを 4 文字で表すため約 33% 増え、さらにパディングが付きます。バイナリをテキスト専用の経路で運ぶための代償です。

本番のシークレットを貼り付けても大丈夫ですか?

このページは静的ファイルで、変換はタブ内の JavaScript で行われます。送信されるデータはありません。入力しながらブラウザのネットワークパネルを開けば自分で確認できます。

ターミナルではどうしますか?

エンコードは printf '%s' 'text' | base64、デコードは base64 -d です。macOS では復号オプションが -D になります。URL セーフにしたい場合は | tr '+/' '-_' | tr -d '=' を足してください。

関連ツール