通常の ASCII
- 入力
- hello world
- 結果
- aGVsbG8gd29ybGQ=
末尾の = はパディングであり、データの一部ではありません。
テキストを Base64 に変換し、また戻します。日本語のような非 ASCII 文字を正確に扱い、JWT が使う URL セーフな文字集合に対応し、中身がテキストでなくバイナリのときは黙って壊さずそのことを伝えます。
すべてブラウザ内で処理されます. このページは静的ファイルです。入力した内容はタブの中だけに留まり、サーバーへ送信されることはなく、閉じれば消えます。実際のトークンや設定を貼り付けても安全です。
kubectl get secret はすべての値を Base64 で表示します。末尾の = はパディングであり、データの一部ではありません。
ひらがな 1 文字が UTF-8 で 3 バイトになります。btoa() をそのまま使うツールはここで例外を投げます。
パディングも + も / もないため、URL にそのまま入れても壊れません。
誰でも元に戻せる符号化にすぎません。Kubernetes Secret は Base64 で符号化されているだけで保護されてはいません。脅威モデル上は平文として扱うべきです。
JWT の各部分は - と _ を使いパディングがありません。厳密な標準デコーダーはこれを拒否します。文字集合を変換し、長さを 4 の倍数に補ってから復号してください。
echo "secret" | base64 は末尾の改行まで符号化します。値を厳密に一致させたいときは echo -n か printf を使ってください。
Base64 は 3 バイトを 4 文字で表すため約 33% 増え、さらにパディングが付きます。バイナリをテキスト専用の経路で運ぶための代償です。
このページは静的ファイルで、変換はタブ内の JavaScript で行われます。送信されるデータはありません。入力しながらブラウザのネットワークパネルを開けば自分で確認できます。
エンコードは printf '%s' 'text' | base64、デコードは base64 -d です。macOS では復号オプションが -D になります。URL セーフにしたい場合は | tr '+/' '-_' | tr -d '=' を足してください。