8비트 이진 데이터를 문자코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식
단어 "Man"을 변환하는 과정은 다음과 같다.
base64인코딩 과정은 먼저 24bit의 buffer를 생성하여 MSB부터 바이트 데이터를 넣은 뒤, 6bit 단위로 잘라 Base64 테이블의 ASCII 문자로 변환합니다.
인코딩 중 남은 바이트가 3바이트(24bit)미만이라면 남은 부분에 패딩 비트(0)을 추가하며 테이블에 없는 "=" 문자를 생성
base64 Encoding을 하게되면 전송해야 될 데이터의 양도 약 33% 정도 늘어난다. 6bit당 2bit의 Overhead(간접비)가 발생하기 때문이다. 데이터의 크기가 증가하고, Encoding과 Decoding에 추가 CPU 연산까지 필요하다. 그러나 ASCII로 Encoding 하여 전송하게 되면 여러 가지 문제가 발생할 수 있습니다.
위와 같은 문제로 ASCII는 시스템간 데이터를 전달하기에 안전하지가 않다. Base64는 ASCII 중 제어문자와 일부 특수문자를 제외한 64개의 안전한 출력 문자만 사용한다.
Base64는 HTML 또는 Email과 같이 문자를 위한 Media에 Binary Data를 포함해야 될 필요가 있을 때, 포함된 Binary Data가 시스템 독립적으로 동일하게 전송 또는 저장되는 걸 보장하기 위해 사용합니다.
참고 사이트
https://ko.wikipedia.org/wiki/베이스64
https://devuna.tistory.com/41