Base64 정의
MIME에서 정의하는 BASE64는 임의의 바이트 스트림을 화면에 표시할 수 있는 ASCII문자들로 바꾸는 인코딩 방식을 말한다. 인코딩된 문자열은 알파벳 대소문자와 숫자, +, / 기호 64개로 이루어지며,"="은 끝을 알리는 코드로 쓰인다. 인코딩된 문자열은 원본보다 대략 25% 정도 크기가 증가한다.
Base64 인코딩 과정
24비트 버퍼에 위쪽(MSB)부터 한 바이트씩 세바이트를 집어 넣는다. 만약 3바이트 미만의 바이트가 남았다면. 버퍼의 남은 부분은 0으로 채운다. 버퍼의 위쪽부터 6비트씩 잘라 그 값을 읽고, 정렬된 문자(base64에서 사용하는 64개의 문자)에서 읽은 값 번째 문자를 출력한다.
+) 24비트의 버퍼에서 입력된 바이트가 한 바이트라면 출력 중 두 개의 바이트만 사용되고 나머지 둘은 "="으로 패딩된다
+) 입력된 바이트가 둘이라면 출력 중 세 개의 바이트만 사용되고 나머지 하나는 "="으로 패딩된다
(이는 디코딩할 때 원본에는 없는 비트가 생기는 것을 방지하기 위함이다)
예시
Text content
|
M
|
a
|
n
|
ASCII
|
77
|
97
|
110
|
Bit pattern |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0
|
Index
|
19
|
22
|
5
|
46
|
Base64-Encoded
|
T
|
W
|
F
|
u
|
Base64 색인표
Base64 색인표
값
|
문자
|
값
|
문자
|
값
|
문자
|
값
|
문자
|
0
|
A
|
16
|
Q
|
32
|
g
|
48
|
w
|
1
|
B
|
17
|
R
|
33
|
h
|
49
|
x
|
2
|
C
|
18
|
S
|
34
|
i
|
50
|
y
|
3
|
D
|
19
|
T
|
35
|
j
|
51
|
z
|
4
|
E
|
20
|
U
|
36
|
k
|
52
|
0
|
5
|
F
|
21
|
V
|
37
|
l
|
53
|
1
|
6
|
G
|
22
|
W
|
38
|
m
|
54
|
2
|
7
|
H
|
23
|
X
|
39
|
n
|
55
|
3
|
8
|
I
|
24
|
Y
|
40
|
o
|
56
|
4
|
9
|
J
|
25
|
Z
|
41
|
p
|
57
|
5
|
10
|
K
|
26
|
a
|
42
|
q
|
58
|
6
|
11
|
L
|
27
|
b
|
43
|
r
|
59
|
7
|
12
|
M
|
28
|
c
|
44
|
s
|
60
|
8
|
13
|
N
|
29
|
d
|
45
|
t
|
61
|
9
|
14
|
O
|
30
|
e
|
46
|
u
|
62
|
+
|
15
|
P
|
31
|
f
|
47
|
v
|
63
|
/
|