[멀티미디어]/텍스트

Base64에 대한 기본 개념

로얄거북 2021. 6. 13. 22:02
반응형

 Base64 소개

 

Base64는 원본 데이터를 64개의 문자들을 통해 Encoding 하는 방식입니다.

 

원본 데이터를 24 Bit 씩 끊어서 6 Bit (64 = 2의 6승) 당 한 개의 문자로 Encoding하기 때문에,

 

Encoding 최종 결과의 길이는 무조건 4의 배수로 나옵니다.

 

(예시 : AB1+, DegD, DEAsDEG=, EGEEDdg3efef)

 

 Base64 표

 

6 Bit의 숫자가 대응되는 문자는 아래의 표와 같습니다.

 

문자 문자 문자 문자 
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 /

 

 Base64 Encoding 과정

 

ASCII Code로 작성된 "Man"이라는 단어를 Base 64로 변환하는 과정은 아래와 같습니다.

 

 

즉, ASCII Code에서의 "Man"은 Base64에서 "TWFu"로 변환됩니다.

 

 

 Base64 Encoding 과정에서 데이터가 부족할 때

 

그런데 데이터가 정확히 24 Bit로 나오지 않는 경우도 있습니다.

 

이럴 경우에 어떤 변환 과정을 거치는 지,

 

"Ma"이라는 단어를 Base64로 변환하는 과정을 통해 설명하겠습니다.

 

 

"Ma"는 16 Bit의 문자이기 때문에 24 Bit씩 변환되는 Base64의 기준에 부족합니다.

 

일단 12 Bit까지는 완전히 채워져있기에 그대로 "TW"로 변환됩니다.

 

그리고 다음 6 Bit는 "0001"로 Bit의 갯수가 부족합니다.

 

이렇게 Bit의 갯수가 부족한 경우 위 그림의 빨간색 부분처럼 0으로 채우고

 

이렇게 채워진 6 Bit를 Base64 변환 표에 맞는 글자로 변환시킵니다.

 

그리고 그 다음 6 Bit(파란색 부분)에는 아무 데이터도 없습니다.

 

이렇게 완전히 비어있는 공간일 경우 "="로 변환시킵니다.

 

그래서 그 결과 "TWE="라는 문자로 Encoding 되는 것입니다.

 

 

 Base64 변환 실습 사이트

 

추가적으로 ASCII Code 문자를 Base64로 변환해주는 사이트를 소개하겠습니다.

 

http://www.hipenpal.com/tool/base64-encode-and-decode-in-korean.php

 

Base64 인코더/디코더 - Hi!Penpal!

문자열을 Base64 방식으로 인코딩 또는 디코딩해줍니다.

www.hipenpal.com

 

직접 여러 시도를 해보시면 Base64의 동작 원리를 이해하기 편할 거라고 생각합니다.

 

반응형