あなたのデータは 100% プライベートです。Base64 のエンコードとデコードはすべてお使いのデバイス上で完結します。
Base64 は、バイナリデータを 64 種類の ASCII 文字(A–Z、a–z、0–9、それに + と /)だけのプレーンテキストとして表す方法です。画像や鍵、メール添付ファイルといったバイナリを、テキスト用に作られたシステムでも安全に送れるようにします。これは暗号化ではなくエンコードです。
Base64 は 64 文字の固定されたアルファベットを使います。0 から 63 までの各値がそのうちのちょうど 1 文字に対応し、これによって任意の 3 バイトのバイナリが 4 つの読める文字になります:
| 値 | 文字 | |
|---|---|---|
| 0–25 | A–Z | 大文字 26 文字 |
| 26–51 | a–z | 小文字 26 文字 |
| 52–61 | 0–9 | 数字 10 文字 |
| 62–63 | + / | 記号 2 文字 |
「=」記号だけは例外です。これは 64 個の値の 1 つではなくパディングで、最後のブロックを埋めるためだけに使われます。
おそらくすでに目にしたことがあるはずです。Base64 は、バイナリをテキストの中に載せて運ぶ必要 がある場所のいたるところで登場します:
その data URI のテクニックはこのようになります。長い文字列が画像そのものです:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />初期のネットワークプロトコルは、生のバイトではなくテキストを前提に作られていました。ASCII は 7 ビットで 128 文字を扱い、英語には十分でしたが、バイナリには不向きでした。一部のシステムは制御文字を壊したり、改行コードを書き換えたり(LF を CR + LF に)して、転送中に画像や音声を静かに破損させていました。
Base64 は、どのシステムでも共通して扱える文字だけを出力することで、こうした問題をすべて回避します。Base16 や Base32 も小さなアルファベットで同じ役割を果たしますが、Base64 は安全性を保ちながら 1 文字あたりより多くのデータを詰め込めます。だからこそ広く使われるようになりました。