Base64エンコーディングの解説

Base64は至る所に存在します。CSSやJWTトークンなどで目にすることでしょう。多くの開発者が、その仕組みを知らないまま利用しています。

Base64はバイナリデータをテキスト文字列に変換します。64種類の文字を使用しており、これにはA-Z、a-z、0-9、プラス(+)、およびスラッシュ(/)が含まれます。パディングには等号(=)が使用されます。

Base64は暗号化ではありません。バイナリデータをテキスト通信チャネルで安全に扱えるようにするためのものです。

仕組み:

  • バイナリデータを3バイトずつのグループに分割します。
  • これらを4つの6ビットのチャンクに分割します。
  • 各チャンクをBase64の文字にマッピングします。

例:「Man」という単語は「TWFu」になります。

Base64の用途:

  • メールの添付ファイル。
  • HTMLへの画像の埋め込み。
  • JWTトークン。
  • JSON経由でのバイナリデータの送信。
  • Basic HTTP認証。

JavaScriptはこれをネイティブでサポートしています。 エンコードには btoa を使用します。 デコードには atob を使用します。

Node.jsでは、ファイルに対して data.toString('base64') を使用します。

システムによってはBase64urlを使用するものもあります。このバージョンはURLに対して安全です。プラスをマイナスに、スラッシュをアンダースコアに置き換え、パディングを削除します。

以下の点に注意してください:

  • Base64はエンコーディングです。セキュリティではありません。
  • 出力サイズは33%大きくなります。
  • テキストチャネルを通じてバイナリデータを送信するために使用します。
  • URLにはBase64urlを使用してください。

出典: https://dev.to/moksh/base64-encoding-explained-a-practical-guide-for-developers-49hh