<HTML>
<HEAD>

<TITLE>MIME</TITLE>


<SCRIPT language="JavaScript">
<!--

	if (navigator.appVersion.charAt(0)>=3){
		var img= new Array()
		img[0] = new Image(); img[0] .src = "home2.gif"
		img[1] = new Image(); img[1] .src = "home1.gif"
	}
    
	function setimg(i,p){
	if(navigator.appVersion.charAt(0) >= 3 ){
        	document.images[i].src=img[p].src;
	}}

//-->
</SCRIPT> 
</HEAD>



<BODY bgcolor="#ffffff" text="#000000" link="#663333" vlink="#663333">
<CENTER>
<DIV align="right"><A href="../../index.html" target="_top" onmouseover="setimg('home',1)" onmouseout="setimg('home',0)"><IMG src="home2.gif" alt="Home"  border="0" name="home"></A></DIV>
</CENTER>


<HR size=1><BR>
<h2>ＭＩＭＥ（メールの拡張）とＢａｓｅ６４説明</h2>
<A href="#step1">■はじめに</A><BR>
<A href="#step2">■Ｂａｓｅ６４</A><BR>


<HR size=1><BR>

<A name="step1"></A>
<B>■はじめに</B><BR>
<BLOCKQUOTE>
ＭＩＭＥ(Multipurpose Internet Mail Extensions)は、Ｅ-ｍａｉｌに各種添付ファイルを付けて送信する場合のメール拡張機能の事です。ＳＭＴＰでは７ビットＡＳＣＩＩ文字制約があり、問題無く送るためには、８ビットバイナリデータを符号化する必要があります。符号化には何種類かありますが、よく使用さえるのは７-Ｂｉｔ、Ｂａｓｅ６４があります。ここでは主にＢＡＳＥ６４について説明します。

</BLOCKQUOTE><BR>

<A name="step2"></A>
<B>■Ｂａｓｅ６４</B><BR>
<BLOCKQUOTE>

<FONT SIZE="4">Base64エンコード</FONT><P>

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

<HR>
<B>図１</B><BR>
<IMG SRC="1.gif"><P>

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

<HR>
<B>図２</B><BR>
<IMG SRC="2.gif"><P>

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

<B>表１　Base64エンコードのアルファベット</B><BR>

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

<HR>
<B>図３</B><BR>
<IMG SRC="3.gif"><P>

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

<HR>
<B>図４</B><BR>
<IMG SRC="4.gif"><P>

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

<HR>

<P>







</BLOCKQUOTE><BR>

</BODY>
</HTML>
