영문 대문자(A~Z) 26개 + 영문 소문자(a~z) 26개 + 숫자(0~9) 10개 = 62개 값 + 2개(+, /)까지 합친
64개 문자를 갖는다.
2^6 = 64이므로,
6bit 로 문자 한 개를 표현한다.
(*bit가 6개면 64개의 문자 표시가 가능하다.)
또한, 6bit 를 4개씩 모아 변환하는데,
이 때문에 비는 공간이 발생한다. (a.k.a padding)
이 경우에는 빈공간을 “=” 문자로 채운다.
example 1 : COW → Y293
문자→ 아스키 → 8비트
C : 99 → 01100011
O : 111 → 01101111
W : 119 → 01110111
따라서, COW는 01100011 01101111 01110111 로 표현할 수 있다.
Base64로 바꾸면, 우선 6bit씩 묶어줘야한다.
→ 01100011 01101111 01110111 (8bit)
→ 011000 110110 111101 110111 (6bit)
→ 24 54 61 55 (10진수)
→ Y 2 9 3 (Base64 변환표)
결과) COW → Y293
Base64 인코딩을 한 결과,
그럼에도 사용하는 이유는,
Base64는 ASCII 중 확실하게 화면에 표시할 수 있는 문자만을 다루기 때문에 시스템 간 전달에 안전하기 때문이다.
따라서 모든 시스템에서 동일한 공통 ASCII로만 이루어진 Base64 인코딩을 사용하는 것이다.
예를 들어, HTML, Email과 같이 문자로 이루어진 미디어에 Binary 데이터가 사용될 때 포함된 Binary 데이터가 시스템 간 동일하도록 보장하기 위해 사용한다.