[CS] BASE 64 란?

윤동환·2023년 3월 22일
0

Computer Science

목록 보기
4/10

BASE64란?

2의 6승(64)비트를 사용하여 ASCII코드 문자로만 이루어진 text를 나타내는 인코딩 방식입니다.

BASE64 코드 표

[A-Z], [a-z], [0-9], +, /, =으로 구성되어있습니다.
'='의 기호는 부족한 비트수를 채우기 위한 padding 비트로써 '='기호가 섞인 인코딩(ex.@@@@@@==)을 본다면 BASE64라고 생각 할 수 있습니다.

BASE64 인코딩 방식

8bit의 연속인 데이터를 6bit로 나누어 인코딩하는 방식입니다.
8비트로 이루어진 데이터를 6비트로 끊어서 묶어주기위해 8과 6의 최소 공배수인 24로 맞추어 24비트씩 끊어 묶어주게됩니다.

위그림은 MAN을 base 64로 인코딩하는 표입니다.
M은 ASCII코드표에서 77(0x4d)이고, 이를 앞의 6비트만 계산하면 19(010011)가 나옵니다.
이렇게 나온 값을 base64 표에 대입하면 T가 나오고, T를 ASCII 코드표에 대입하면 84(Ox54)로 인코딩 됩니다.

padding 부호 예시

M 한글자만 인코딩 한다고 가정했을 때, M의 앞 6비트는 그대로 인코딩 되어 T가 됩니다. 하지만, 남은 2비트의 경우 6비트가 되지않기때문에 0으로 채워주어 6비트를 만들어 인코딩을 하게됩니다.
그렇다면 24비트 (6 x 4)기준으로 묶어야 하는데 12바이트만 채워졌기 떄문에 남은 12비트는 6비트씩 '=' 패딩 부호로 채워주게됩니다.

용량이 증가하는데 왜 base64를 사용하는가?

ASCII는 7비트 인코딩 방식인데, 나머지 1비트를 처리하는 방식이 각 시스템마다 상이하고 일부 제어문자의 코드가 시스템 별로 다른것이 있어 직접 ASCII 코드를 전달하기에 문제가 생길 수도 있다고합니다.
때문에 BASE64로 안전하게 인코딩하여 문자를 전달합니다.

SMTP가 7-bit ASCII코드만 전달하도록 되어있어 이메일 전송에도 많이 사용됩니다.

출처 블로그 글

profile
모르면 공부하고 알게되면 공유하는 개발자

0개의 댓글