オクテット値を64文字の英数字などにする encode です。 [[MIME]] RFC (最新版は RFC 2045 ) で定義されていますが、元々は [[PEM]] (RFC 1421 ) で規定されていました。 オクテット値3つ (8ビット×3=24ビット) を4文字 (6ビット×4) で表現します。ですからデータ量は3分の4倍、33%増加になります。 64文字 (と、特殊用途に使われる「=」) は、 [[ISO/IEC 646]] の版で 全て共通に存在し、しかも [[EBCDIC]] の全ての版で使える文字 から選ばれたようです。 Value Encoding Value Encoding Value Encoding Value Encoding 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 (pad) = 15 P 32 g 49 x 16 Q 33 h 50 y Base64 は6ビット単位になりますが、オクテット列の長さと必ずしも 一致する (6と8の公倍数の長さになる) とは限らないので、 「=」で埋めて調節します。この結果、 Base64 data は必ず 4の整数倍の長さになります。 Base64'ed data は、 MIME の制限上、一行辺り76文字以下 でなければなりません。区切りの改行文字列 CRLF は、 復号の時には無視されます。 (これ以外でも、上の表に無い 文字が現れたら、無視して処理を続けます。) 詳しくは RFC 2045 を読んで下さい。 RFC 2047 は、 encoded-word で使われる B 符号化を、 Base64 と全く同じ物であるとしています。 *応用 Base64 を使っている主な応用 -[[PEM]]の署名 -[[MIME]]の[[転送符号化]] -[[Content-MD5:領域]] -[[data: URL]] -x-gzip64 [[転送符号化]] (See [[Content-Transfer-Encoding:領域]]) *実装 Perl なら、 MIME::Base64 を使うのが気楽かと。 *See also -[[符号化]] --[[転送符号化]] ---[[Quoted-Printable]] --[[base85]] --[[uuencode]] --[[BinHex]] --[[ISH]] -[[MIME]] --[[encoded-word]] -[[RFC822と仲間達の頭領域名]] --[[Content-Transfer-Encoding:領域]] -[[PEM]] -[[URI]] --[[URL]] --[[data: URL]] -[[ダイジェスト関数]] --[[MD5]] --[[SHA1]]