Base64 인코딩

임준영·2021년 4월 10일
0

Base64란 무엇일까?

컴퓨터 분야에서 쓰이는 Base64란 8비트 이진 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념입니다.

Base64는 데이터를 64진 법으로 나타냅니다. 이를 0 부터 63까지 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/으로 나타냅니다.

문장이 끝나면 =로 데이터가 끝났다는 것을 표시합니다. 다시 데이터를 원복할 때 틀리지 않도록 방지하기 위함입니다. 문장 하나를 Base64에 의거해서 데이터를 변경하는 방법은 아래와 같습니다.

image

ex)

  1. M, a, n이라는 텍스트 문자가 있습니다. 이 문자들은 아스키 코드로 표현하면 77, 97, 110입니다.

  2. 해당하는 아스키 문자를 8비트 패턴으로 변경합니다.

  • 77 - 01001101, 97 - 011000001, 110 - 01101110 입니다.
  1. 8비트를 앞에서 부터 6비트 씩 잘라서 다시 십진수로 변경합니다.

  2. 그 값으로 나온 십진수를 Base64의 색인표에 대응시켜 나온 값으로 대응 합니다.

  3. 이 작업을 반복합니다.

1. base64 url safe는 또 무엇?

아래 그림은 base64 표입니다. 위에서 8비트를 앞에서 부터 6비트 씩 잘라서 십진수로 변경한 값에 매핑되는 ASCII 코드를 보여주는 테이블 입니다.

image

62, 63을 보면 각각 +, /에 대응되는 것을 알 수 있습니다. 그러나 이는 데이터를 컨트롤할 때 오류를 일으킬 수 있는 문제가 될 수도 있고, = 가 url에서 사용되는 문자라는 문제 등이 제기되어 왔습니다. 따라서 아래와 같이 변경하였습니다. 아래의 url safe한 base64의 62, 63번은 -, _로 대체되었습니다.

가장 중요한 base64 인코딩을 사용하는 이유는 신뢰할 수 없는 통신채널에 바이너리 데이터를 왜곡하지 않고 정상적으로 전송하기 위해 사용하다는 것이 가장 중요한 이유입니다.

참조 사이트: https://babyprogram.tistory.com/50

0개의 댓글