BASE64とは?仕組みとよく使われる場面、暗号ではない理由をやさしく解説
メールのソースやWebページの中身を見ていて、意味の分からない英数字の長い列に出会ったことはありませんか。AからZや数字がずらっと並んでいます。ときどき + や / が混ざっていて、最後に = が付いていることもあります。
壊れているわけではありません。それはたぶんBASE64です。
この記事では、BASE64がどんなもので、なぜあちこちで使われているのかをお話しします。読み終わるころには、見かけたときに「ああ、あれか」と分かるようになります。自分で変換して、中身を確かめることもできますよ。
BASE64は、データを文字だけで書き直す方法です
コンピューターの中のデータは、画像も音声も文章も、すべて数字の並びです。ところが世の中には、文字しか通さない仕組みがまだ残っています。昔からあるメールの仕組みが、その代表です。
そこで考えられたのがBASE64です。どんなデータでも、決まった64種類の文字だけで書き表せるようにしました。使う文字は次のとおりです。
- 英大文字のAからZ
- 英小文字のaからz
- 数字の0から9
- 記号の
+と/
合わせて64種類です。名前の「64」はここから来ています。長さを揃えるために、最後に = が付くこともあります。
どれも、ほとんどの環境で崩れずに扱える文字ばかりです。だから、文字しか通らない道でも、データを安全に運べるわけです。
実際にどう変わるのか見てみましょう
たとえば「こんにちは」をBASE64にすると、こうなります。
こんにちは
44GT44KT44Gr44Gh44Gv5文字が、20文字の英数字になりました。中で何が起きているのか、ざっくり説明しますね。
「こんにちは」は、コンピューターの中では数字の並びとして保存されています。この数字のひとつひとつをバイトと呼びます。いまよく使われるUTF-8という文字の決まりでは、ひらがな1文字は3バイトです。5文字なので15バイトになります。
BASE64は、この並びを3バイトずつ区切ります。そして3バイトを4つの文字に置き換えます。15バイトは3バイトが5組です。4文字が5組で、20文字になるという仕組みです。
3バイトが4文字になるので、BASE64にするとデータの量はおよそ3分の4倍に増えます。便利な反面、少しかさばるわけです。これは覚えておくと、あとで役に立ちます。
どんなときに使われているの?
BASE64は、目立たないところで毎日のように使われています。よく出会う場面をいくつか紹介します。
メールの添付ファイル
メールは、もともと文字を送るための仕組みです。写真やPDFを添付すると、送るときに中身がBASE64などで文字の形に書き直されます。受け取った側のメールソフトが元に戻してくれるので、ふだんは気づきません。
メールのソースを表示すると、長い英数字の塊が見えることがあります。あれがそうです。
Webページに画像を直接書き込むとき
HTMLやCSSの中で、data:image/png;base64, で始まる長い文字列を見たことはありませんか。これは画像ファイルをBASE64にして、ページの中に直接書き込んだものです。小さなアイコンなどを別のファイルにせず、ひとまとめにしたいときに使われます。
JSONなど、文字のデータにファイルを入れるとき
プログラム同士がやりとりするデータは、JSONのような文字の形式であることが多いです。そこに画像などを入れたいときも、BASE64にして文字として埋め込む方法がよく使われます。
ログイン情報を送る仕組みの一部
Webには、ベーシック認証と呼ばれるログインのやり方があります。ここでは、ユーザー名とパスワードをBASE64にして送ります。実はここに大事な注意点があるので、次で詳しくお話しします。
気をつけたいのは、暗号ではないということ
BASE64の文字列は、ぱっと見では何が書いてあるか分かりません。だから、なんとなく暗号のように感じてしまいます。でも、BASE64は暗号ではありません。
変換の決まりは公開されていて、誰でも知っています。鍵も合言葉も要りません。BASE64の文字列を手に入れた人は、誰でもすぐに元に戻せます。
つまり、パスワードや個人情報をBASE64にしても、隠したことにはなりません。ベーシック認証も、URLが https で始まる暗号化された接続と組み合わせて使うのが前提です。大切な情報を守りたいときは、BASE64とは別に、ちゃんとした暗号化を使ってください。
逆に言えば、正体の分からないBASE64を見つけたら、元に戻して中身を確かめられます。BASE64を元のデータに戻すことをデコードと呼びます。反対に、データをBASE64にすることはエンコードと呼びます。この2つの言葉だけ覚えておけば、ツールを使うときに迷いません。
変換するときに知っておきたいこと
日本語は文字コードで結果が変わる
日本語をBASE64にするときは、文字の決まりが関わってきます。この決まりを文字コードと呼びます。さきほどの例は、UTF-8で計算したものです。古いシステムでは、Shift_JISなど別の文字コードが使われていることもあります。
同じ「こんにちは」でも、文字コードが違えば中の数字が変わります。当然、BASE64の結果も変わります。エンコードしたときとデコードするときで文字コードが食い違うと、戻したはずの文字が化けてしまいます。
デコードして文字化けしても、BASE64が壊れているとは限りません。まずは文字コードの違いを疑ってみてください。
記号が違う種類もある
BASE64には、+ と / の代わりに - と _ を使う種類もあります。URLの中では + や / が特別な意味を持ってしまうためです。見慣れない記号が混ざっていても、慌てなくて大丈夫です。
自分で変換して確かめてみましょう

仕組みが分かったら、一度自分の手で試してみるのがいちばんです。benri-kit.comのBASE64のタブを開けば、その場ですぐに試せます。
やり方はかんたんです。
- ツールのページで、BASE64のタブが開いていることを確かめます。
- 入力欄に、変換したい文字を入れます。最初は「こんにちは」がおすすめです。
- エンコードして、BASE64の文字列が出てくるのを見てみます。
- 出てきた文字列をデコードして、元の文字に戻ることも確かめます。
UTF-8で変換した場合、「こんにちは」は 44GT44KT44Gr44Gh44Gv になります。この記事と同じ結果が出れば、仕組みをちゃんとつかめています。
このツールは、入力した内容をサーバーへ送りません。変換はすべて、あなたのブラウザの中で行われます。仕事のメールに入っていた文字列や、設定ファイルの一部など、外に出したくないものでも安心して中身を確かめられます。
まとめ
BASE64は、どんなデータでも64種類の文字だけで書き直す方法です。メールの添付ファイルやWebページの画像など、文字しか通らない場所でデータを運ぶために使われています。
覚えておきたいのは、次の3つです。
- データの量はおよそ3分の4倍に増える
- 暗号ではないので、誰でも元に戻せる
- 日本語は、文字コードが違うと文字化けする
次に謎の英数字の列を見かけたら、ぜひデコードしてみてください。思わぬ中身が出てくるかもしれませんよ。