Home


MIME(メールの拡張)とBase64説明

■はじめに
■Base64


■はじめに
MIME(Multipurpose Internet Mail Extensions)は、E-mailに各種添付ファイルを付けて送信する場合のメール拡張機能の事です。SMTPでは7ビットASCII文字制約があり、問題無く送るためには、8ビットバイナリデータを符号化する必要があります。符号化には何種類かありますが、よく使用さえるのは7-Bit、Base64があります。ここでは主にBASE64について説明します。

■Base64
Base64エンコード

 Base64エンコードが8ビットデータの7ビットデータへのエンコードを可能にしている方法を理解するには、エンコードが行われる方法を図にしてみるといいでしょう。図1は、いくつかの異なる方法で表現した5バイトのメッセージの例です。


図1

 Base64エンコードを使って図1のメッセージをエンコードするために、メッセージのバイナリ表現が使われます。最初に、24ビットで表された3バイトが取り出されて、6ビットごとの4つのグループに分けられます。(図2参照)。


図2

 次に、この6ビットごとのグループが評価され、それをASCII文字に直すために表1に示した対応する値と比較されます。図3は、このような変換メカニズムを使ってエンコードされたメッセージを示しています。

表1 Base64エンコードのアルファベット
左:6ビットの値(10進)/右:対応するASCII文字
0 A 17 R 34 i 51 z
1 B 18 S 35 j 52 0
2 C 19 T 36 k 53 1
3 D 20 U 37 l 54 2
4 E 21 V 38 m 55 3
5 F 22 W 39 n 56 4
6 G 23 X 40 o 57 5
7 H 24 Y 41 p 58 6
8 I 25 Z 42 q 59 7
9 J 26 a 43 r 60 8
10 K 27 b 44 s 61 9
11 L 28 c 45 t 62 +
12 M 29 d 46 u 63 /
13 N 30 e 47 v    
14 O 31 f 48 w (穴埋め用) =
15 P 32 g 49 x    
16 Q 33 h 50 y    


図3

 24ビットのデータでは完全に割り切れないメッセージのエンコードを可能にするため、末尾のバイトを穴埋めする手法が使われます。図4は、データが8ビット、あるいは16ビットで終わっているときに、穴埋め文字がどのように使われるかを示しています。


図4

 インターネット上では、メールメッセージにおさめた数多くのファイルが送られます。
開発するサンプルメールリーダーでは、埋め込まれたファイルを送受信するためにBase64エンコードを利用します。