인터넷을 사용하다 보면 Base64 인코딩이라는 용어를 한 번쯤 접하게 됩니다. API를 연동하거나 이메일 첨부파일을 다룰 때, 또는 웹 개발을 공부하다 보면 Base64 문자열이 등장하는 경우가 많습니다.
처음에는 암호처럼 보이는 긴 영어와 숫자 조합 때문에 “이게 암호화인가?”라는 생각이 들기도 합니다. 저 역시 API 인증을 처음 공부할 때 Base64를 암호화 방식으로 오해했던 경험이 있습니다. 하지만 원리를 이해하고 나니 생각보다 매우 단순한 기술이라는 것을 알게 되었습니다.
이번 글에서는 Base64 인코딩이란 무엇인지, 왜 사용하는지, 그리고 암호화와 어떤 차이가 있는지까지 쉽게 정리해 보겠습니다.
Base64 인코딩이란?
Base64 인코딩(Base64 Encoding)은 바이너리(Binary) 데이터를 문자 형태로 변환하는 인코딩 방식입니다.
컴퓨터는 이미지, 동영상, PDF 같은 파일을 모두 바이너리 데이터(0과 1)로 저장합니다.
하지만 인터넷의 일부 통신 프로토콜은 텍스트만 안정적으로 전송할 수 있기 때문에 바이너리 데이터를 그대로 보내면 오류가 발생할 수 있습니다.
이러한 문제를 해결하기 위해 바이너리 데이터를 영문 대소문자, 숫자, 일부 특수문자로 구성된 64개의 문자 집합으로 변환하는 것이 바로 Base64 인코딩입니다.
즉,
바이너리 데이터를 사람이 읽을 수 있는 문자열 형태로 바꾸는 기술이라고 이해하면 됩니다.
왜 Base64 인코딩을 사용할까?
Base64는 다양한 환경에서 데이터를 안전하게 전달하기 위해 사용됩니다.
대표적인 이유는 다음과 같습니다.
- 이메일 첨부파일 전송
- JSON 데이터 안에 이미지 포함
- REST API 인증 정보 전달
- 웹 브라우저에서 이미지 직접 표시(Data URI)
- XML 및 HTML 데이터 전송
특히 REST API를 공부하다 보면 다음과 같은 Authorization 헤더를 자주 보게 됩니다.
Authorization: Basic dXNlcjpwYXNzd29yZA==
여기서
user:password
를 Base64로 인코딩하면
dXNlcjpwYXNzd29yZA==
가 됩니다.
Base64는 암호화일까?
많은 초보자가 가장 많이 헷갈리는 부분입니다.
결론부터 말하면
Base64는 암호화(Encryption)가 아닙니다.
암호화는 키(Key)가 있어야 원래 데이터를 복원할 수 있지만,
Base64는 누구나 쉽게 디코딩(Decode)할 수 있는 단순한 인코딩 방식입니다.
즉,
- 암호화 ❌
- 압축 ❌
- 인코딩 ✅
입니다.
민감한 개인정보나 비밀번호를 보호하는 용도로 Base64만 사용하는 것은 매우 위험합니다.
Base64 인코딩 과정
예를 들어
ABC
라는 문자열이 있다고 가정해 보겠습니다.
처리 과정은 다음과 같습니다.
- 문자열을 ASCII 코드로 변환
- 이를 바이너리(2진수)로 변환
- 6비트 단위로 나누기
- Base64 문자표에 맞게 변환
최종 결과는
QUJD
가 됩니다.
겉보기에는 암호처럼 보이지만, Base64 규칙만 알면 언제든 원래 문자열로 복원할 수 있습니다.
Base64에서 ‘=’ 문자는 왜 붙을까?
Base64 문자열 끝에는 종종
=
또는
==
가 붙습니다.
이것은 패딩(Padding)이라고 합니다.
Base64는 데이터를 24비트 단위로 처리하기 때문에 길이가 맞지 않으면 빈 공간을 ‘=’ 문자로 채워 규칙을 유지합니다.
따라서 ‘=’는 데이터의 일부가 아니라 형식을 맞추기 위한 문자입니다.
Base64 사용 예시
실제로는 다양한 곳에서 활용됩니다.
1. API 인증
아이디와 비밀번호를 Base64로 인코딩하여 Authorization 헤더에 사용합니다.
2. 이미지 삽입
HTML에서 이미지를 파일이 아닌 문자열로 포함할 수 있습니다.
data:image/png;base64,…
3. 이메일 첨부파일
이미지나 PDF를 Base64 문자열로 변환하여 전송합니다.
4. JSON 데이터
이미지 파일을 문자열 형태로 포함할 수 있어 API에서 많이 사용됩니다.
Base64의 장점과 단점
장점
- 텍스트 기반 시스템에서도 바이너리 전송 가능
- 대부분의 프로그래밍 언어에서 기본 지원
- 플랫폼에 관계없이 동일한 결과 제공
- 구현이 매우 간단
단점
- 데이터 크기가 약 33% 증가
- 보안 기능이 없음
- 누구나 쉽게 디코딩 가능
- 대용량 데이터에는 비효율적
Base64와 암호화의 차이
| Base64 | 암호화 |
|---|---|
| 인코딩 방식 | 보안 기술 |
| 누구나 복원 가능 | 키가 있어야 복원 가능 |
| 데이터 전달 목적 | 데이터 보호 목적 |
| 보안 기능 없음 | 보안 기능 제공 |
이 차이를 이해하면 API 인증이나 웹 개발을 공부할 때 훨씬 혼동이 줄어듭니다.
마무리
Base64 인코딩은 웹 개발과 API 통신에서 매우 자주 사용되는 기본 기술입니다. 처음에는 복잡한 암호처럼 보이지만, 실제로는 바이너리 데이터를 텍스트 형태로 변환하는 인코딩 방식일 뿐입니다.
특히 Base64는 암호화가 아니라는 점을 반드시 기억하는 것이 중요합니다. 데이터를 안전하게 보호하려면 별도의 암호화 기술을 함께 사용해야 합니다.
웹 개발, REST API, 인증 시스템을 공부할 계획이라면 Base64의 원리와 활용 방법을 미리 이해해 두면 앞으로 다양한 기술을 배우는 데 큰 도움이 될 것입니다.