한 문장으로 정리한 Base64
Base64는 RFC 4648에 정의된 바이너리-텍스트 인코딩 방식으로, 데이터 3바이트를 A–Z, a–z, 0–9, +, /로 이루어진 알파벳의 4개 문자로 표현합니다.
Base64가 필요한 이유
이메일(SMTP), JSON, XML, HTML 속성, URL, 터미널 등 많은 시스템은 텍스트만 다루도록 설계되었습니다. 이미지나 PDF 같은 원시 바이너리 데이터에는 이런 시스템이 변경하거나 거부할 수 있는 바이트가 들어 있을 수 있습니다. Base64는 데이터를 안전하고 인쇄 가능한 문자로 바꿔 전송 중에 손상되지 않도록 합니다.
Base64 인코딩 원리 단계별 설명
- 입력 바이트를 준비합니다:
M,a,n= 77, 97, 110. - 이를 24비트로 나타냅니다:
01001101 01100001 01101110. - 비트를 6비트씩 네 묶음으로 나눕니다:
010011 010110 000101 101110= 19, 22, 5, 46. - 각 숫자에 해당하는 문자를 알파벳에서 찾습니다: 19 =
T, 22 =W, 5 =F, 46 =u.
그래서 Man은 TWFu가 됩니다. 디코딩은 이 단계를 거꾸로 수행하면 됩니다.
Base64 알파벳
| 값 | 문자 |
|---|---|
| 0–25 | A–Z |
| 26–51 | a–z |
| 52–61 | 0–9 |
| 62 | + (URL 안전: -) |
| 63 | / (URL 안전: _) |
| 패딩 | = |
= 패딩의 의미
입력 길이가 3의 배수가 아니면 마지막 묶음을 채우고 = 기호로 표시합니다. 예를 들어 Ma는 TWE=, M은 TQ==가 됩니다. 올바른 문자열이라면 패딩이 중간에 나타나는 일은 없습니다.
Base64의 종류
- 표준 Base64(RFC 4648) – 위의 알파벳과
=패딩을 사용합니다. - Base64URL –
-,_문자를 사용하고 패딩을 생략하는 경우가 많으며, URL, 파일 이름, JWT에 쓰입니다. - MIME Base64 – 표준 알파벳에 76자마다 줄바꿈을 넣는 방식으로, 이메일에 사용됩니다.
Base64는 암호화가 아닙니다
Base64는 아무것도 숨기지 않으며 누구나 즉시 디코딩할 수 있습니다. 결과가 무작위 문자열처럼 보여서 보호 수단으로 오해받곤 합니다. 비밀 정보에는 AES 같은 진짜 암호화를 사용하고, Base64는 암호화된 바이트를 텍스트로 전송할 때만 사용하세요.
크기 증가
n바이트를 인코딩한 길이는 4 × ⌈n / 3⌉자로, 원본보다 약 33% 깁니다. MIME 줄바꿈을 넣으면 2–3% 더 늘어납니다.
Base64가 쓰이는 곳
- 이메일 첨부 파일(MIME)
- HTML과 CSS에서 이미지·폰트용 Data URI
- JSON 및 XML API의 바이너리 필드
- JSON 웹 토큰(JWT)과 OAuth
- HTTP Basic 인증 헤더
- PEM 인증서와 SSH 키
- Kubernetes 시크릿과 설정 파일
자주 묻는 질문
Base64는 암호화나 해싱과 같은 것인가요?
아니요. 암호화는 되돌리려면 키가 필요하고 해싱은 아예 되돌릴 수 없지만, Base64는 누구나 디코딩할 수 있습니다.
왜 Base64라고 부르나요?
64개 문자로 이루어진 알파벳을 사용하기 때문입니다. 따라서 각 문자는 6비트의 정보를 담습니다(26 = 64).
문자열이 Base64인지 어떻게 알 수 있나요?
A–Z, a–z, 0–9, +, /(또는 - 및 _)만 포함하고, 길이가 보통 4의 배수이며, 끝에 = 기호가 한두 개 붙어 있을 수 있습니다. 가장 빠른 확인 방법은 Base64 Decoder Online에 붙여넣어 보는 것입니다.
최종 업데이트: