Base64
概要
Base64とは、任意のデータを一定の規則に基づいて特定の文字種のみからなるテキスト(文字)データに置き換える変換方式の一つで、64種類の英数字のみを用いてデータを表現する方式。電子メールの添付ファイル(MIME)などでよく用いられる。アルファベットの大文字(26文字)と小文字(26文字)、数字(10文字)、「+」「/」の2つの記号を用いてあらゆるデータを表現する。元のデータの置き換えには使わないが、規定の文字数に達しない場合に「=」も使用される。
ASCII形式のテキストしか受け付けないデータ形式や伝送路、あるいは特定の記号に制御用の機能が与えられていて使用できない状況などで、バイナリデータや多バイト文字を含む任意のデータを安全に表現することができる。
具体的な変換手順としては、まず元のバイナリデータの列を6ビットずつに区切り(末尾が6ビットに足りない場合は0を追加)、これを整数値(0から63)に見立てて変換表で該当する文字に置き換える。
データがバイト境界で区切られるよう、変換後の文字は4文字をセットに扱われ、足りない場合は4文字になるまで末尾に「=」が追加される。変換表では大文字「A」から「Z」がそれぞれ順に0から25に、小文字「a」~「z」が26~51に、「0」~「9」が52~61に、「+」が62に、「/」が63に、それぞれ対応している。
Base64はUNIX系OSで古くから使われている「uuencode」を元に考案された。バイナリのテキストエンコーディング方式としては他にも、かつてのMac OSで用いられた「BinHex」や日本で考案された「ish」などがある。派生する方式として、「l」(小文字エル)と「I」(大文字アイ)など、人間から見て紛らわしい形の文字を排除した58文字のみで表現する「Base58」がある。
ビット 列 | 値 | 文 字 | コード | ビット 列 | 値 | 文 字 | コード | ビット 列 | 値 | 文 字 | コード | ビット 列 | 値 | 文 字 | コード |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
000000 | 0 | A | 65 | 010000 | 16 | Q | 81 | 100000 | 32 | g | 103 | 110000 | 48 | w | 119 |
000001 | 1 | B | 66 | 010001 | 17 | R | 82 | 100001 | 33 | h | 104 | 110001 | 49 | x | 120 |
000010 | 2 | C | 67 | 010010 | 18 | S | 83 | 100010 | 34 | i | 105 | 110010 | 50 | y | 121 |
000011 | 3 | D | 68 | 010011 | 19 | T | 84 | 100011 | 35 | j | 106 | 110011 | 51 | z | 122 |
000100 | 4 | E | 69 | 010100 | 20 | U | 85 | 100100 | 36 | k | 107 | 110100 | 52 | 0 | 48 |
000101 | 5 | F | 70 | 010101 | 21 | V | 86 | 100101 | 37 | l | 108 | 110101 | 53 | 1 | 49 |
000110 | 6 | G | 71 | 010110 | 22 | W | 87 | 100110 | 38 | m | 109 | 110110 | 54 | 2 | 50 |
000111 | 7 | H | 72 | 010111 | 23 | X | 88 | 100111 | 39 | n | 110 | 110111 | 55 | 3 | 51 |
001000 | 8 | I | 73 | 011000 | 24 | Y | 89 | 101000 | 40 | o | 111 | 111000 | 56 | 4 | 52 |
001001 | 9 | J | 74 | 011001 | 25 | Z | 90 | 101001 | 41 | p | 112 | 111001 | 57 | 5 | 53 |
001010 | 10 | K | 75 | 011010 | 26 | a | 97 | 101010 | 42 | q | 113 | 111010 | 58 | 6 | 54 |
001011 | 11 | L | 76 | 011011 | 27 | b | 98 | 101011 | 43 | r | 114 | 111011 | 59 | 7 | 55 |
001100 | 12 | M | 77 | 011100 | 28 | c | 99 | 101100 | 44 | s | 115 | 111100 | 60 | 8 | 56 |
001101 | 13 | N | 78 | 011101 | 29 | d | 100 | 101101 | 45 | t | 116 | 111101 | 61 | 9 | 57 |
001110 | 14 | O | 79 | 011110 | 30 | e | 101 | 101110 | 46 | u | 117 | 111110 | 62 | + | 43 |
001111 | 15 | P | 80 | 011111 | 31 | f | 102 | 101111 | 47 | v | 118 | 111111 | 63 | / | 47 |
* 文字コードはASCIIの10進表記
(2022.10.14更新)