이번 포스트에서는 운영체제 공부의 연장선으로,
데이터 인코딩 방식 중 하나인 BASE64의 구조와 원리를 정리하였다.
파일 전송, 이메일, HTTP 통신 등 다양한 환경에서 사용되는 BASE64는
이진 데이터를 텍스트로 안전하게 변환해주는 기본 기술 중 하나이다.
1. BASE64란?
BASE64는 바이너리 데이터를 텍스트 형식으로 변환하는 인코딩 방식이다.
- 이름 그대로 64개의 ASCII 문자(
A-Z,a-z,0-9,+,/)를 사용한다. - 주로 이진 파일을 텍스트 기반의 전송 경로에서 안전하게 전달하기 위해 사용된다.
- 출력은 항상 4의 배수 길이의 문자열로 구성된다.
2. 인코딩 과정
BASE64는 3바이트(24비트)를 기준으로 다음과 같은 과정을 거친다:
1. 3바이트 입력 (총 24비트) → 6비트 단위로 나눔 → 4개의 인덱스 생성
2. 각 인덱스를 BASE64 테이블에 매핑 → ASCII 문자로 변환
3. 입력이 3바이트보다 작을 경우 `=` 패딩을 추가하여 길이를 맞춤예시:
- 입력 (ASCII):
Man→ 바이너리로 변환 →01001101 01100001 01101110 - 6비트 단위로 분리 →
010011 010110 000101 101110→ 19 22 5 46 - BASE64 문자로 변환 →
TWFu
3. 디코딩 과정
디코딩은 인코딩과 반대 순서로 이루어진다:
- BASE64 문자열을 4자 단위로 자르고, 각 문자의 인덱스를 복원한다.
- 6비트 단위로 합쳐 24비트로 만든 후, 이를 다시 3바이트로 분할한다.
=패딩은 실제 바이트 수 계산 시 제외된다.
4. BASE64의 장단점
장점
- 텍스트 기반 환경에서 이진 데이터를 안전하게 전달할 수 있다.
- 이메일, JSON, XML, JWT 등에서 널리 사용된다.
단점
- 인코딩 결과가 원본보다 약 33% 커진다.
- 암호화나 압축과는 달리 단순히 표현 형태를 바꾸는 인코딩일 뿐이다.
5. 개발자가 BASE64를 접하는 상황
- 이미지나 바이너리 데이터를 문자열로 변환할 때 (예:
<img src="data:image/png;base64,...">) - JWT 토큰 내부의 payload 인코딩
- API를 통해 파일 업로드 시 BASE64 포맷으로 전송되는 경우
학습 정리
BASE64는 구조적으로 단순하지만,
텍스트 중심의 인터넷 환경에서 이진 데이터를 안전하게 주고받는 데 매우 중요한 역할을 한다.
인코딩과 디코딩의 내부 동작을 이해하면, 단순한 사용을 넘어 디버깅, 보안, 데이터 처리까지 폭넓게 응용할 수 있다.
'CS공부 > 기타 CS지식' 카테고리의 다른 글
| 락(Lock)의 종류와 적용 전략: Optimistic vs Pessimistic (0) | 2025.05.14 |
|---|---|
| 해싱 보안 이슈 및 강화 가이드 (1) | 2025.04.26 |
| SK텔레콤 유짐정보 해킹, BPFdoor 악성코드 사건 정리 (3) | 2025.04.26 |
| N+1 문제 (0) | 2025.04.21 |
| 데드락(Deadlock) (0) | 2025.04.21 |