コンピュータ

Base64とは

 

Base64って何?

Base64とは、64種類の文字(アルファベット「 a~z , A~Z 」と数字「 0~9 」、一部の記号「 + , / 」)と末尾の記号「 = 」を用いて一定の規則に基づきデータを変換するエンコード方式(データを他の形式に変換する際の方式)の一つです。

base64とは

上記図はBase64の変換イメージです。元データをBase64でエンコード(変換)することでBase64の文字列に変換することができます。そして、変換したBase64の文字列はデコード(元に戻す)することで、元のデータに戻ります。

Base64はなぜ必要なの?

電子メールは、SMTPなどの制約により7bit(ASCII)で表現される英数字しか送ることができません。そのため、画像などの添付ファイルをメールでやり取りすることができませんでした。

この問題を解決したのが、MIME(Multipurpose Internet Mail Extension:多目的インターネットメール拡張)と呼ばれる電子メールでさまざまなフォーマット(書式)を扱えるようにした規格です。

このMIMEの中でBase64というデータの変換方法が定められており、Base64を使うことで画像などの添付ファイルをメールで使うことができるようになりました。

スポンサーリンク

Base64は何に使われているの?

電子メール

電子メールは、先ほど説明した通り、7ビットの文字列以外をやり取りすることができません。そのため、添付ファイルのデータを送信する際にBase64が標準的に利用されています。

Basic認証

HTTPヘッダは特殊記号を使うことができません。そのため、Base64にエンコードした文字列が使用されています。

Authorization: Basic <BASE64エンコードしたユーザ名:パスワード>

ファイルアップロード

ファイルのアップロードは「multipart/form-data」を使うことが一般的ですが、画像などのバイナリデータをBase64にエンコードして文字列化したものをJSONにつめて送信する手法もよく使用されています。

Base64の変換形式

それでは、Base64のエンコードがどのような手順で実施されているのかを見ていきます。

[手順1] 2進数に変換する

Base64にエンコードしたいデータを2進数に変換します。

変換した文字列:ABCD

16進数:41, 42, 43, 44

2進数:0100 0001, 0100 0010, 0100 0011, 0100 0100

[手順2] 6ビットずつに分割し、最後に「0」を付与

変換した2進数を6ビットずつに分割します。

そして、最後が2ビットとなり4ビット足りないので、最後も6ビットになるように「0」を追加します。

0100 0001, 0100 0010, 0100 0011, 0100 0100

010000 010100 001001 000011 010001 000000

[手順3] 変換表の通りに4文字ずつ変換し、最後に「=」を付与

以下の変換表の通りに4文字ずつ変換していきます。そして、4文字に分けた時、最後が2文字分足りないので「=」を追加します。

010000 010100 001001 000011 010001 000000

QUJD RA==

これで完成です。「ABCD」をBase64にエンコードすると「QUJD RA==」になることが分かりました。

 

[Base64 変換表]

10進数 2進数 文字
0 000000 A
1 000001 B
2 000010 C
3 000011 D
4 000100 E
5 000101 F
6 000110 G
7 000111 H
8 001000 I
9 001001 J
10 001010 K
11 001011 L
12 001100 M
13 001101 N
14 001110 O
15 001111 P
16 010000 Q
17 010001 R
18 010010 S
19 010011 T
20 010100 U
21 010101 V
22 010110 W
23 010111 X
24 011000 Y
25 011001 Z
26 011010 a
27 011011 b
28 011100 c
29 011101 d
30 011110 e
31 011111 f
32 100000 g
33 100001 h
34 100010 i
35 100011 j
36 100100 k
37 100101 l
38 100110 m
39 100111 n
40 101000 o
41 101001 p
42 101010 q
43 101011 r
44 101100 s
45 101101 t
46 101110 u
47 101111 v
48 110000 w
49 110001 x
50 110010 y
51 110011 z
52 110100 0
53 110101 1
54 110110 2
55 110111 3
56 111000 4
57 111001 5
58 111010 6
59 111011 7
60 111100 8
61 111101 9
62 111110 +
63 111111 /

よろしければ記事の評価をお願いします

© 2020 ITを分かりやすく解説