1. 인코딩(Encoding) / 디코딩(Decoding)
- 인코딩(Encoding) : 파일에 저장된 정보의 형태나 형식을 특수한 목적(데이터 표준화, 보안 등)을 위해서 일정 규칙에 따라 다른 형태로 변환하는 행위 (암호화 또는 부호화라고도 불림)
- 디코딩(decoding) : 인코딩에 의해 변환된 데이터를 변환되기 전 기존의 데이터로 변환시키는 행위 (복호화라고도 불림)
2. Base64
- Base64 : 2진수(Binary)로 이루어진 8bit 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 문자로 표현하기 위해 만들어진 인코딩 방식이며 64진법을 기반으로 사용한다.
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시 발생할 수 있는 문제를 방지할 수 있다.
반응형
'Computer-Sience > Etc' 카테고리의 다른 글
[CS] Iterator / Generator (0) | 2023.05.04 |
---|---|
[CS] 객체 지향 프로그래밍 (Object-Oriented Programming) / SOLID (0) | 2023.04.22 |
[CS] MPA(Multi Page Application) / SPA(Single Page Application) (0) | 2023.02.05 |