컴퓨터 분야에서 쓰이는 Base64란 8비트 이진 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념입니다.
Base64는 데이터를 64진 법으로 나타냅니다. 이를 0 부터 63까지 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
으로 나타냅니다.
문장이 끝나면 =
로 데이터가 끝났다는 것을 표시합니다. 다시 데이터를 원복할 때 틀리지 않도록 방지하기 위함입니다. 문장 하나를 Base64에 의거해서 데이터를 변경하는 방법은 아래와 같습니다.
ex)
M, a, n이라는 텍스트 문자가 있습니다. 이 문자들은 아스키 코드로 표현하면 77, 97, 110입니다.
해당하는 아스키 문자를 8비트 패턴으로 변경합니다.
8비트를 앞에서 부터 6비트 씩 잘라서 다시 십진수로 변경합니다.
그 값으로 나온 십진수를 Base64의 색인표에 대응시켜 나온 값으로 대응 합니다.
이 작업을 반복합니다.
아래 그림은 base64 표입니다. 위에서 8비트를 앞에서 부터 6비트 씩 잘라서 십진수로 변경한 값에 매핑되는 ASCII 코드를 보여주는 테이블 입니다.
62, 63을 보면 각각 +, /에 대응되는 것을 알 수 있습니다. 그러나 이는 데이터를 컨트롤할 때 오류를 일으킬 수 있는 문제가 될 수도 있고, = 가 url에서 사용되는 문자라는 문제 등이 제기되어 왔습니다. 따라서 아래와 같이 변경하였습니다. 아래의 url safe한 base64의 62, 63번은 -, _
로 대체되었습니다.
가장 중요한 base64 인코딩을 사용하는 이유는 신뢰할 수 없는 통신채널에 바이너리 데이터를 왜곡하지 않고 정상적으로 전송하기 위해 사용하다는 것이 가장 중요한 이유입니다.