Base 64 인코딩

Simcurity·2023년 4월 10일
0

1. base64 인코딩이란?

인코딩이란 원활한 의사소통을 위해 표현을 표준화하거나, 저장 공간의 절약 등의 이유로 본래의 형태를 다른 형태롤 변화해주는 것입니다.
Base64란 64진법이라는 뜻입니다.
즉, Base64 인코딩이란 binary data를 ascii 문자 형태의 text 형식으로 변화시켜주는 하나의 인코딩 방식입니다.

2. 왜 base64 인가?

그렇다면 왜 Base 64인가?
공교롭게도 우리가 표현하는 문자 A-Z, a-z, 0-9는 총 62개이다. 여기에 +, =, / 를 추가합니다.
여기서 = 기호는 패딩을 위해 쓰여집니다.
또한 2의 제곱수로 앞서 말한 표현 문자 총 62개에서 2개 밖에 차이가 나지 않습니다. 그래서 우리는 마지막 2개를 어떤 기호를 쓰느냐의 차이만 있을 뿐 입니다.
만약 128로 했다면 128까지 채울 문자가 적당하지 않았을 것입니다.

3. 인코딩 과정

표를 보면 binary 값과 그에따른 문자 값들이 0부터 63까지의 ascii문자들이 나열되어있습니다.

아래 그림을 보면서 이해해보겠습니다.

본래 문자인 'Man'이 있습니다.
2진 데이터로 표현하면

01001101 01100001 01101110

이진 데이터를 모두 이어준뒤 6비트 씩 잘라줍니다.

010011 010110 000101 101110

그러면 19 22 5 46으로 Base64 표를 보면 TWFu가 됩니다.

즉, 메세지 => ascii 이진 데이터 => 6비트 => Base64 인코딩의 과정을 거칩니다.

4. 패딩 (=)

그런데, 만약 본래의 문자열의 3글자가 아닌 2글자나 1글자라면?
=> ascii의 이진 데이터 길이가 8과 6의 최소공배수가 아니라면 어떻게 될까?
이때 앞서 말한 = 기호를 씁니다.
예를 들어, 만약 'Man'이 아닌 'Ma' 였다면?

마지막 00에 의해 인코딩 된 TWE하고 마지막에 = 기호가 하나 붙어줍니다.

만약 'M'만 있다면 6비트로 잘라내면

010011 010000

010011(T)와 2개의 비트가 남고 그 2개의 비트에 의한 010000(Q)의 값이 합쳐져서 TQ가 됩니다. 그리고 마지막에 0000이었으므로 =가 2개 붙어 'TQ=='가 됩니다.

아직 Base64 인코딩에 익숙하지 않지만 끝에 = 기호가 붙어있다면 Base64 인코딩을 생각할 수 있을 것 같습니다.

0개의 댓글