Base64エンコード
テキストをBase64にエンコードします。標準またはURLセーフのアルファベットに対応し、すべてブラウザ内で動作します。
すべてブラウザ内で動作します。アップロード、記録、保存は一切行いません。
Base64は任意のバイト列を、テキストの経路を通り抜けられる文字に変換します。HTTPヘッダー、JSON文字列、メール本文、data URIなどです。これはエンコードであって暗号化ではなく、誰でもすぐに元に戻せます。
仕組み
テキストをUTF-8のバイト列として読み、3バイトごとに64文字のアルファベットの4文字に変換します。長さが3の倍数でない場合、結果は1つか2つの"="でパディングされます。Base64の出力が常に入力より約3分の1長くなるのはそのためです。
RFC 4648のURLセーフアルファベットは"+"と"/"を"-"と"_"に置き換え、パディングを省きます。そのため、値を再エスケープせずにクエリ文字列やファイル名に入れられます。JSON Web Tokenはこの方式を使っています。
例
| ケース | 入力 | 結果 |
|---|---|---|
| Basic認証の資格情報 | aladdin:opensesame | YWxhZGRpbjpvcGVuc2VzYW1l |
| アクセント付きのテキスト(UTF-8のバイト列からエンコード) | café | Y2Fmw6k= |
よくある質問
Base64でデータは保護されますか?
まったく保護されません。鍵も秘密もない、元に戻せるエンコードです。エンコードしたものを目にした人は誰でも読み戻せます。このページでもワンクリックでできます。
出力が入力より長くなるのはなぜですか?
出力の4文字で入力の3バイトを運ぶので、結果は約33%大きくなり、さらに最大2文字のパディングが加わります。このオーバーヘッドは、テキストしか通さない経路でバイナリデータを運ぶための代償です。
どのアルファベットを選べばよいですか?
本文やヘッダーで送るものには標準を。値をURL、ファイル名、JWTに入れる場合はURLセーフを選んでください。そうすれば"+"、"/"、"="をさらにパーセントエンコードする必要がありません。
知っておきたいこと
- すべてブラウザ内で処理されます。貼り付けた内容はアップロードも記録も保存もされません。