Base64とは何か?
Base64とは、バイナリデータ(画像、ファイルなど)を64種類の文字(A-Z、a-z、0-9、+、/)だけで表現するエンコード方式です。
なぜこれが必要かというと、インターネットの世界ではすべての通信が「テキスト」として扱われる場面が多いから。画像や音声ファイルをJSONに直接埋め込みたいとき、メールで添付ファイルを送るとき、HTMLのimgタグに画像を直接埋め込みたいときなどに使われます。
Base64でエンコードするとデータサイズは約33%増加します。画像を常にBase64にするのは非効率なので、「URLで管理できない場合」に使うのが基本です。
エンジニアが使う主な場面
- APIの認証情報をヘッダーに埋め込む(Basic認証: "Authorization: Basic Base64(user:pass)")
- JWT(JSON Web Token)のペイロードはBase64URLエンコード
- HTMLにCSS背景画像をインライン埋め込み(data:image/png;base64,...)
- メール送信ライブラリでの添付ファイル処理
- バイナリデータをJSON APIで送受信するとき
- ssh秘密鍵やSSL証明書の確認
使い方
- テキストエリアに変換したい文字列を入力
- 「エンコード」ボタンでBase64形式に変換
- 「デコード」ボタンでBase64を元のテキストに戻す
- URLセーフ(+→-、/→_)にも対応
日本語(UTF-8)もそのまま変換できます。
Base64デコードでセキュリティ調査
セキュリティエンジニアにとってBase64デコードは頻繁に使う技術です。マルウェアやフィッシングサイトのソースコードには、解析を難しくするためにBase64でエンコードされた文字列が埋め込まれることがあります。
JWTトークンのペイロード部分をデコードすると、どんな情報が入っているか確認できます(署名検証は別途必要)。
JWTは"eyJ..."で始まります。ドット(.)で3つに分割し、2番目の部分をBase64デコードするとJSONが現れます。セキュリティ診断や開発デバッグでよく使う手順です。
Base64URLとは
通常のBase64には"+"と"/"が含まれますが、これらはURLに使うと問題が起きる文字です。そこでURLに安全な形式として、+を-に、/を_に置き換えたBase64URLが使われます。
JWTやOAuth2の認証フローではBase64URLが標準です。このツールは両方の形式に対応しています。
このツールを作った理由
開発中によく使うけど、専用ツールを毎回Googleで探すのが手間。コマンドラインで"echo -n "text" | base64"と打てばいいのですが、Windowsでは少し面倒だし、GUIツールのほうが文字数確認もしやすい。
自分のポータルに置いておけば、どのPCからもすぐアクセスできます。それが作った理由です。