Base64 인코딩이란? 원리와 사용 사례
Base64가 바이너리를 64개 ASCII 문자로 표현하는 원리, 33% 크기 증가, data URI·이메일 첨부 같은 용도와 보안 오해까지 정리했습니다. 인코더로 바로 변환해 보세요.
이미지나 파일을 텍스트 안에 끼워 넣어야 할 때, 또는 이메일 첨부를 처리할 때 빠지지 않고 등장하는 것이 Base64입니다. 이름은 자주 들었지만 원리와 한계를 정확히 아는 경우는 드뭅니다. Base64의 동작 방식과 실제 용도, 그리고 흔한 보안 오해를 정리하고 Base64 인코더로 직접 변환하는 방법을 알아봅니다.
한눈에 보기
- Base64는 바이너리 데이터를 64개의 ASCII 문자(A–Z, a–z, 0–9, +, /) 로 표현하는 인코딩입니다.
- 3바이트(24비트)를 4개의 6비트 문자로 변환하며, 길이를 4의 배수로 맞추기 위해
=로 패딩합니다. - 인코딩 후 데이터 크기가 약 33% 커집니다.
- 용도: 이미지 data URI, 이메일 첨부(MIME), 텍스트 기반 전송.
- 암호화가 아니라 인코딩이라 보안 수단이 될 수 없습니다. Base64 인코더로 누구나 디코딩할 수 있습니다.
Base64는 어떻게 동작하나
Base64는 8비트 단위의 바이너리 데이터를 6비트 단위로 잘라 표현합니다. 6비트로 나타낼 수 있는 값은 64가지(2의 6제곱)이고, 여기에 사람이 읽고 전송하기 안전한 문자 64개를 하나씩 대응시킵니다. 사용하는 문자는 A–Z, a–z, 0–9 그리고 +, / 입니다.
핵심은 3바이트씩 묶어서 처리한다는 점입니다. 3바이트는 24비트이고, 이를 6비트씩 끊으면 정확히 4조각이 나옵니다. 즉 원본 3바이트가 Base64 문자 4개로 바뀝니다.
| 단계 | 단위 | 설명 |
|---|---|---|
| 입력 | 3바이트 = 24비트 | 원본 바이너리 데이터 |
| 분할 | 6비트 × 4 | 24비트를 4조각으로 나눔 |
| 매핑 | 문자 4개 | 각 6비트를 64문자에 대응 |
패딩과 크기 증가
원본 데이터의 길이가 항상 3의 배수인 것은 아닙니다. 마지막에 1~2바이트만 남으면 6비트 조각이 부족해지는데, 이때 부족한 자리를 = 기호로 채워 출력 길이를 4의 배수로 맞춥니다. 그래서 Base64 문자열 끝에 = 나 == 가 붙는 것을 자주 보게 됩니다.
또 하나 기억할 점은 크기입니다. 3바이트가 4문자가 되므로 데이터는 약 33% 커집니다. 작은 아이콘을 코드에 박아 넣을 때는 편리하지만, 큰 파일을 Base64로 다루면 용량이 그만큼 늘어난다는 점을 고려해야 합니다.
어디에 쓰나
- 이미지 data URI:
<img src="data:image/png;base64,...">처럼 이미지를 HTML/CSS 안에 직접 포함해 별도 요청 없이 표시합니다. - 이메일 첨부(MIME): 이메일은 본래 텍스트 기반 프로토콜이라, 바이너리 첨부 파일을 Base64로 인코딩해 안전하게 실어 보냅니다.
- 텍스트 기반 전송: JSON·XML처럼 텍스트만 담을 수 있는 형식에 바이너리 데이터를 넣어야 할 때 활용합니다.
작은 데이터라면 Base64 인코더에 붙여 넣어 곧바로 인코딩·디코딩 결과를 확인할 수 있습니다.
자주 묻는 질문
Base64는 암호화인가요?
아닙니다. Base64는 데이터를 다른 표현으로 바꾸는 인코딩일 뿐, 키도 비밀도 없습니다. 누구나 디코딩해 원본을 복원할 수 있으므로 보안 수단으로 쓰면 안 됩니다.
왜 데이터 크기가 커지나요?
원본 3바이트(24비트)를 4문자(각 8비트, 총 32비트)로 표현하기 때문입니다. 결과적으로 약 33% 증가합니다.
문자열 끝의 = 는 무슨 뜻인가요?
패딩 기호입니다. 출력 길이를 4의 배수로 맞추기 위해 부족한 자리를 채운 것으로, 디코딩 시에는 무시됩니다.
비밀번호를 Base64로 저장해도 되나요?
절대 안 됩니다. 디코딩이 자유롭기 때문에 그대로 노출되는 것과 같습니다. 비밀번호는 해시 함수로 처리하는 것이 맞습니다.
마무리
Base64는 바이너리를 텍스트 환경에서 안전하게 다루기 위한 인코딩이며, 보안과는 무관합니다. 3바이트가 4문자가 되는 원리와 33% 크기 증가, 그리고 누구나 디코딩할 수 있다는 점만 기억하면 충분합니다. 변환이 필요할 때는 Base64 인코더에서 바로 인코딩과 디코딩을 해보세요.
🧰 관련 도구
관련 글
JSON 포맷터 사용법과 자주 나는 오류
JSON 작성 규칙과 정렬·압축의 차이, 작은따옴표·트레일링 콤마 같은 흔한 오류와 해결법을 정리했습니다. JSON 포맷터로 바로 검증해 보세요.
해시 함수(SHA-256)란? 용도와 특징
SHA-256 해시 함수의 단방향성, 쇄도 효과, 256비트 출력 같은 특징과 파일 무결성·비밀번호 저장·블록체인 용도를 정리했습니다. 해시 생성기로 바로 만들어 보세요.
정규식(Regex) 기초와 자주 쓰는 패턴
정규식 메타문자(. * + ? ^ $ [] () \d \w \s)와 g·i·m 플래그, 그리디 vs 게으른 매칭을 예제와 함께 정리했습니다. 정규식 테스터로 패턴을 바로 검증해 보세요.