인코딩

Base64

검정비니 2022. 3. 23. 21:25
728x90
반응형

Base64란?

Base64는 바이너리 데이터를 문자 코드에 영향을 받지 않는 ASCII 코드로만 이루어진 일련의 문자열로 변환하는 인코딩 기법이다.

 

원래 base64를 글자 그대로 번역하여 보면 64진법이란 뜻이다. 특별히 64진법이 컴퓨터에서 흥미로운 것은, 64가 2의 제곱수(64 = 26)이며, 2의 제곱수들에 기반한 진법들 중에서 화면에 표시되는 ASCII 문자들을 써서 표현할 수 있는 가장 큰 진법이기 때문이다. 왜냐하면, 다음 제곱수인 128진법에는 128개의 기호가 필요한데 화면에 표시되는 ASCII 문자들은 128개가 되지 않는다.

 

이 인코딩 방식은 전자 메일을 통한 이진 데이터 전송 등에 주로 쓰이고 있다. Base 64에는 어떤 문자와 기호를 쓰느냐에 따라 여러 변종이 있지만, 잘 알려진 것은 모두 처음 62개는 알파벳 A-Z, a-z와 0-9를 사용하고 있으며 마지막 두 개를 어떤 기호를 쓰느냐의 차이만 있다. 다만, 통상적으로 전자 메일 등에 사용되므로, 이와 관련된 MIME 포맷에 따라 A-Z, a-z, 0-9, 그리고 +와 /를 주로 사용한다.

 

Base64 인코딩이 진행 되는 과정은?

데이터를 베이스64로 바꾸는 과정은 다음과 같다. 우선 24비트 버퍼(6bit를 4개 씩 모아서 진행하기 때문에 24비트 버퍼를 사용함)에 위쪽(MSB)부터 한 바이트 씩 세 바이트를 집어넣는다. 그리고 남은 바이트가 3바이트 미만이라면, 버퍼의 남은 부분은 0으로 채워넣게 된다.

 

그리고, 버퍼의 위쪽부터 6비트 씩 잘라 그 값을 읽은 뒤,

다음에 정렬된 64개  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"의 문자 중에서 읽은 값 번째 문자를 골라 출력한다.

 

만약 입력된 바이트가 하나라면 출력 중 두 개만이 사용되고 나머지 둘은 "="으로 패딩되며, 입력된 바이트가 둘이라면 출력 중 세 개 만이 사용되고 나머지 하나는 "="으로 패딩되게 된다. 이것은 원본으로 되돌릴 때 원본에는 없던 비트가 생기는 것을 방지하기 위함이다.

 

이 과정을 입력 데이터가 끝날 때까지 반복하면 인코딩이 된다.

 

반응형