Base64 인코딩
25 Mar 2020 | EtcBase 64 인코딩이란?
인코딩
Base64 인코딩에 대해 알아보기전에 먼저 인코딩이란게 무엇인지 간략하게 알아보자. 인코딩은 정보의 형태나 형식을 표준화,
보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식을 말한다.
동영상이나 이미지영역에서도 많이 사용되는 용어지만 우리는 Binary Data를 Text로 바꿔주는 Base64 인코딩에 대해서
알아봐야 하기 때문에 이하는 생략한다.
Base64 인코딩
Base64란 Binary Data를 Text로 바꾸는 Encoding(binary-to-text encoding schemes)의 하나로써 Binary Data를 Character set에 영향을 받지 않는 공통 ASCII 영역의 문자로만 이루어진 문자열로 바꾸는 인코딩이다.
Base64 글자를 그대로 직역하면 64진법이라는 뜻이다. 64진법은 컴퓨터한테 특별한데 그 이유는 2의 제곱 수이며 2의 제곱 수에 기반한 진법 중 화면에 표시되는 ASCII 문자들로 표시할 수 있는 가장 큰 진법이기 때문이다. (ASCII에는 제어문자가 다수 포함되어 있기 때문에 화면에 표시되는 ASCII 문자는 128개가 되지 않는다)
핵심은 Base64 인코딩은 Binary Data를 Text로 변경하는 인코딩이다.
변경하는 방식은 Binary Data를 6bit 씩 자른 뒤 6 bit에 해당하는 문자를 아래 Base64 색인표에서 찾아 치환한다.
(실제로는 Padding을 더해주는 과정이 추가된다)
기본적인 원리는 간단하다. 문자열 -> ASCII -> binary -> 6bit cut -> base64_encode
그런데 한 가지 문제가 있다. 모든 문자열이 3개(24bit)씩 남김없이 끊어지진 않는다는 것이다.
그래서 padding을 하게 되는데 padding의 뜻 그대로 ‘불필요하게 넣은 군더더기’라고 생각하면 된다.
만약 3개씩 끊어지지않고 빈자리가 생긴다면 인코딩 후 패딩문자인 =가 그 빈자리만큼 들어가게 된다.
즉 Many -> 77 97 110 121 -> 01001101 01100001 01101110 01111001
-> 010011 010110 000101 101110 011110 010000 (남은 비트 뒤에 ‘0’을 채워 6비트 만듬)
-> TWFueQ가 되고, 처음에 Man y– 이므로 2개의 빈공간이 있음을 알려주기 위해 패딩문자를 추가
-> TWFueQ== 가 base64 인코딩의 최종 결과물이 된다
ref. wiki
ref. blog