본문 바로가기
Computer-Sience/Etc

[CS] Base64 (Encode/Decode)

by dev_ss 2022. 11. 30.

1. 인코딩(Encoding) / 디코딩(Decoding)

  • 인코딩(Encoding) : 파일에 저장된 정보의 형태나 형식을 특수한 목적(데이터 표준화, 보안 등)을 위해서 일정 규칙에 따라 다른 형태로 변환하는 행위 (암호화 또는 부호화라고도 불림)

 

  • 디코딩(decoding) : 인코딩에 의해 변환된 데이터를 변환되기 전 기존의 데이터로 변환시키는 행위 (복호화라고도 불림)

2. Base64

  • Base64 : 2진수(Binary)로 이루어진 8bit 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 문자로 표현하기 위해 만들어진 인코딩 방식이며 64진법을 기반으로 사용한다.

< Base64 방식을 이용한 ASCII 문자 표기법 >


3. 인코딩 과정

1. 원본 문자 -> 문자를 ASCII 기반의 8bit binary(2진수)로 변환

 

ex) 'A' -> [10진수 : 65] - [2진수 : 01000001]

 

 

2. 변환된 8bit 문자를 6bit씩 분할(24bit 기준으로 6bit씩 분할 - Buffer로 3byte가 지정되어 있다 : 1byte = 8bit)

 

ex) 'AAA' - [2진수 : 01000001 01000001 01000001] -> [변환된 2진수 : 010000  010100 000101 000001]

 

 

3. Base64기반 ASCII 문자표에 대입 후 변환

 

 ex) [변환된 2진수 : 010000  010100 000101 000001] -> 'QUFB'

 

 

  •  만약 3byte씩 나누었을 때 공백이 생긴다면 남는 2진수 자리에는 0을 채워넣고 문자열로 변환하며 변환된 문자열에는 공백의 표기를 위한 =를 추가한다.

4. Base64 Encoding 사용 이유

 

1. ASCII의 문제점

 

 - ASCII는 7bit Encoding을 기반으로 1bit의 처리방식시스템마다 상이할 수 있어 문제를 야기할 수 있다.

 

 - 일부 제어문자(ex. newline은 시스템에 따라 X'0A' 또는 X'15'로 표기)가 시스템마다 다른 값을 가진다.

 

 

2. 안전한 출력 문자만 사용

 

 - Base64는 ASCII 중 제어문자 및 특수문자대부분 제외하고 안전한 출력 문자만 사용한다.

 

 - 영상이나 이미지 데이터를 전송할 때 ASCII기반 Encoding시 발생할 수 있는 문제를 방지할 수 있다.

반응형