티스토리 뷰

공부합시다

[정의] base64

IamMH 2014. 1. 15. 13:38

 

컴퓨터 분야에서 쓰이는 Base 64 (베이스 육십사)란 8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다.

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

그런 까닭에 이 인코딩은 전자 메일을 통한 이진 데이터 전송 등에 많이 쓰이고 있다. Base 64에는 어떤 문자와 기호를 쓰느냐에 따라 여러 변종이 있지만, 잘 알려진 것은 모두 처음 62개는 알파벳 A-Z, a-z와 0-9를 사용하고 있으며 마지막 두 개를 어떤 기호를 쓰느냐의 차이만 있다.

 

1. 원리는 뭘까요?

 

일반적으로 컴퓨터는 byte라고 하는 8bit를 기준으로 데이터를 표한하는 것이 일반적입니다.

8bit로 표현하는 데이터를 6bit로 표현하겠다는 겁니다.

 

8bit와 6bit의 최소 공배수는 24bit입니다.

즉 입력된 byte 문자열을 24bit 단위로 잘라서 다시 6bit씩 잘라서 표에 따라 문자로 변환해줍니다. 

아래 그림을 보면 글자 3개 24bit를 다시 6bit 문자 4개로 나누고 있습니다.

 

그럼 실제로 바꿔 볼까요?

step1) 먼저 예를 들면 "abc"는 8bit 문자로 구성된 byte 문자열 입력입니다.

step2) 그럼 이 값은 각 문자를 의미하는 8bit 이진값으로 표현됩니다.

step3) 이를 6bit 단위로 다시 구분합니다

step4) 이를 base64 문자셋으로 변환합니다 아래의 표를 참조하세요 

 

 

 

step4) 만약 24bit가 아니라면?

BASE64 인코딩은 항상 24bit 단위로 수행합니다.

그래서 남는 비트가 생기면 남은 bit를 0으로 패딩합니다.

모든 bit가 0인 6bit 문자는 '=' 으로 치환됩니다.

 


댓글