画像ファイルやAPIのレスポンスの中に、英数字と記号だけで構成された長い文字列を見かけることがあります。これがBase64です。本記事では、その仕組みと使われる場面を解説します。
Base64は、どんなデータも「A〜Z」「a〜z」「0〜9」「+」「/」の64種類の文字(と、長さを揃えるための「=」)だけで表現する符号化方式です。3バイトのデータを4文字に変換する規則で、元のデータより約33%サイズが大きくなります。
例: "Hello" という文字列 → SGVsbG8=
メールの添付ファイルやAPI通信の多くは、本来テキストを送るための仕組みです。画像や音声のようなバイナリデータをそのまま流すと、通信経路によっては正しく扱えないことがあります。そこで、バイナリデータを、誰でも安全に送受信できる文字列に変換してから送る、という方法が使われます。Base64は、その代表的な変換方式です。
具体的には、次のような場面で使われます。
ここは誤解されやすい点です。Base64は、データの見た目を文字列に変えているだけで、第三者が解読できないようにする暗号化ではありません。デコードの手順は公開されており、誰でも簡単に元のデータへ戻せます。パスワードや個人情報など、他人に見られたくないデータをBase64にするだけで安全にはなりません。機密情報を扱う場合は、別途暗号化を行う必要があります。
Base64は本来バイト列を変換する仕組みなので、日本語の文字列を扱う場合は、先にUTF-8などの文字コードでバイト列に変換してからBase64エンコードします。この手順を省略すると、文字化けの原因になります。
Base64は、バイナリデータを64種類の文字だけの文字列に変換する符号化方式で、メールやAPI通信、画像の埋め込みなどで広く使われています。暗号化ではなく誰でもデコードできる点に注意してください。
実際の変換はBase64エンコード/デコードツールから行えます。JWTの中身を確認したい場合はJWTのデコードでわかることもあわせてご覧ください。