Base64 인코딩 디코딩란?
Base64는 이진 데이터를 64개의 안전한 문자(A-Z, a-z, 0-9, +, /)로 바꾸는 인코딩입니다. 이메일 첨부파일, 데이터 URI, HTTP 기본 인증 헤더처럼 텍스트만 다룰 수 있는 곳에 이진 데이터를 실어 보낼 때 씁니다.
중요한 점은 Base64가 암호화가 아니라는 것입니다. 누구나 되돌릴 수 있는 공개된 변환이므로 비밀번호나 개인정보를 숨기는 용도로 쓰면 안 됩니다.
사용 방법
- 방향(인코딩 / 디코딩)을 고릅니다.
- 내용을 붙여 넣으면 즉시 변환됩니다.
- URL이나 파일명에 넣을 거라면 URL-safe 변형을 켜세요.
- 결과 복사 버튼으로 가져갑니다.
계산 방법
3바이트(24비트) → 6비트씩 4조각 → 4글자
예) '안' (UTF-8: EA B0 88)
11101010 10110000 10001000
111010 101011 000010 001000
→ 6 43 2 8
→ 6=G 43=r 2=C 8=I
= 'GrCI'
길이가 3의 배수가 아니면 = 로 채운다| 구분 | 표준 Base64 | URL-safe 변형 |
|---|---|---|
| 62번 문자 | + | - |
| 63번 문자 | / | _ |
| 패딩 | = 사용 | 보통 생략 |
| 쓰이는 곳 | 이메일, 데이터 URI | URL, 파일명, JWT |
Base64는 3바이트를 4글자로 바꾸므로 데이터 크기가 약 33% 늘어납니다. 압축이 아니라 표현 방식을 바꾸는 것이라 용량이 줄지 않습니다.
활용 예시
| 원본 | Base64 |
|---|---|
| Hello | SGVsbG8= |
| 안녕 | 7JWI64WV |
| A | QQ== |
| AB | QUI= |
| ABC | QUJD |
A 한 글자는 1바이트라 2개의 = 패딩이, AB는 2바이트라 1개의 패딩이 붙습니다. ABC는 정확히 3바이트라 패딩이 없습니다. 패딩 개수만 봐도 원본 길이를 짐작할 수 있습니다.
자주 묻는 질문
- Base64는 암호화인가요?
- 아닙니다. 키 없이 누구나 되돌릴 수 있는 인코딩입니다. 비밀번호를 Base64로 바꿔 저장하는 것은 평문으로 저장하는 것과 같습니다. 암호화가 필요하면 AES 같은 암호 알고리즘을 쓰세요.
- 한글이 깨지는데요?
- Base64 자체는 바이트만 다루므로 문자 인코딩을 먼저 정해야 합니다. 이 도구는 UTF-8을 쓰므로 한글과 이모지가 정확히 왕복합니다. 상대방 시스템이 EUC-KR을 쓴다면 결과가 다를 수 있습니다.
- URL-safe는 언제 쓰나요?
- Base64의 +와 /는 URL에서 특별한 뜻이 있어 그대로 넣으면 깨집니다. 쿼리 파라미터, 경로, 파일명에 넣을 때는 URL-safe 변형(-, _)을 씁니다. JWT 토큰도 이 방식을 씁니다.
- 패딩(=)을 떼도 되나요?
- 원본 길이를 계산할 수 있으므로 대부분의 디코더가 패딩 없이도 처리합니다. 이 도구도 패딩이 없는 입력을 자동으로 보정해 디코딩합니다.
- 이미지도 Base64로 바꿀 수 있나요?
- 가능하고 데이터 URI로 HTML에 직접 넣을 때 씁니다. 다만 용량이 33% 늘고 캐시가 되지 않아 작은 아이콘 정도에만 적합합니다. 이 도구는 텍스트 입력만 지원합니다.
참고 자료
계산 기준 · 텍스트를 UTF-8로 인코딩한 뒤 Base64로 변환합니다. URL-safe 변형은 + 와 / 를 - 와 _ 로 바꾸고 패딩을 제거합니다. 디코딩 시 URL-safe 입력과 패딩 누락, 공백을 자동으로 보정합니다.