Base64 — 글자만 지나갈 수 있는 길로 데이터를 보내는 법
이메일과 웹 주소처럼 오래된 통로에는 아무 바이트나 실을 수 없습니다. Base64 는 어떤 데이터든 64개의 안전한 글자로만 다시 적는 규칙입니다. 암호가 아니라 포장이라, 누구나 되돌려 읽을 수 있습니다.
이메일 본문, 웹 주소, 설정 파일 같은 곳은 원래 글자를 나르도록 만들어졌습니다. 사진이나 압축 파일의 바이트를 그대로 넣으면 중간의 어떤 시스템이 줄바꿈으로 오해하거나 잘라 버립니다. 그래서 데이터를 A–Z, a–z, 0–9 와 기호 두 개로만 다시 적습니다.
6비트씩 끊어 한 글자로 바꾸기 때문에 원본보다 커집니다. 영문은 약 1.33배, 한글도 1.33배입니다. 다만 한글은 UTF-8 에서 이미 한 글자가 3바이트라, '안녕하세요' 다섯 글자가 20자가 됩니다.
실제 변환 결과
| 원본 | 바이트 | base64 |
|---|---|---|
| hello | 5 | aGVsbG8= |
| 안녕하세요 | 15 | 7JWI64WV7ZWY7IS47JqU |
| こんにちは | 15 | 44GT44KT44Gr44Gh44Gv |
두 가지 알파벳이 있습니다
표준 base64 는 62번째와 63번째 글자로 + 와 / 를 쓰고, 길이를 맞추려고 끝에 = 를 붙입니다. 문제는 이 셋이 웹 주소에서 특별한 뜻을 갖는다는 것입니다. / 는 경로를 나누고 + 는 공백을 뜻하며 = 는 값을 대입합니다.
그래서 주소에 넣을 때는 + 대신 -, / 대신 _ 를 쓰고 = 는 아예 생략하는 변형을 씁니다. JWT 토큰이 이 형식이라, 토큰 안을 들여다보려고 이 도구를 여는 경우가 많습니다.
이 도구는 두 형식을 모두 읽습니다. 어느 쪽인지 고르지 않아도 알아서 처리합니다. 내보낼 때는 원하는 쪽을 고르면 됩니다.
무엇이 잘못됐는지 구분해서 알려 줍니다
base64 가 안 풀리는 이유는 몇 가지로 나뉘는데, 대부분의 도구는 한 줄짜리 오류만 냅니다. 원인을 알아야 고칠 수 있어서 이 도구는 구분합니다.
오류의 종류
| 입력 | 무슨 뜻인가 |
|---|---|
| !!!! | base64 에 쓸 수 없는 문자가 섞였습니다 |
| QUJDR | 길이가 맞지 않습니다 — 일부가 빠졌습니다 |
| /////w== | 풀리긴 했지만 글자가 아닙니다 — 이미지나 파일입니다 |
암호가 아닙니다
가장 흔한 오해입니다. base64 는 열쇠가 없고, 누구나 되돌릴 수 있습니다. 비밀번호나 개인정보를 base64 로 바꿔서 넣어 두는 것은 봉투에 넣지 않고 엽서에 적는 것과 같습니다.
JWT 토큰의 내용도 마찬가지입니다. 토큰은 서명으로 위조를 막을 뿐 내용을 가리지 않습니다. 그래서 토큰에 담긴 이름이나 권한은 누구나 읽을 수 있고, 이 도구로도 읽힙니다.
이럴 때 씁니다
- •JWT 토큰 안에 어떤 값이 들어 있는지 확인할 때
- •설정 파일이나 API 응답에 들어 있는 base64 값을 읽을 때
- •작은 이미지를 HTML·CSS 안에 직접 넣을 때 (data: URI)
- •이메일 헤더의 인코딩된 제목을 풀어 볼 때
- •줄바꿈이나 특수문자 때문에 잘리는 값을 안전하게 옮길 때
자주 묻는 질문
줄바꿈이 섞인 값도 되나요?
됩니다. 이메일과 인증서 파일은 base64 를 여러 줄로 나눠 적는 것이 관례라, 공백과 줄바꿈은 무시합니다.
끝의 = 가 없는데 풀립니다.
URL-safe 형식은 = 를 생략하는 것이 관례입니다. 길이로 몇 개가 필요한지 알 수 있어서 자동으로 채워 넣고 풉니다.
파일도 변환할 수 있나요?
이 도구는 글자만 다룹니다. 파일을 base64 로 바꾼 값을 붙여넣으면 '글자로 읽을 수 없다' 고 알려 줍니다 — 실패가 아니라 그 값이 텍스트가 아니라는 뜻입니다.
입력한 값이 전송되나요?
아니요. 변환은 브라우저 안에서만 일어납니다. 토큰을 붙여넣어도 나가지 않습니다.
