03 / 가이드
Base64 인코딩 설명: 언제 도움이 되고 언제 해가 되는가
Base64가 실제로 무엇인지, 정확한 33% 크기 오버헤드, 데이터 URL과 이메일이 이 인코딩으로 본전을 뽑는 지점, 보안 메커니즘이 아닌 이유, 그리고 깨진 문자열을 디버깅하는 방법.
인코딩이지, 암호화도 압축도 아니다
Base64는 임의의 바이트를 일반 텍스트로 적는 표준 방식입니다. A–Z, a–z, 0–9에 +와 /를 더한 64개의 인쇄 가능 문자가 6비트 묶음을 나타내므로, 입력 3바이트가 정확히 출력 4문자가 됩니다. 이 대응에는 비밀이 없고, 원본보다 작아지는 일도 없습니다.
- 공개 알파벳알파벳은 고정되어 공개되어 있습니다. 누구든 어떤 언어로든 한 줄의 코드로 Base64 문자열을 디코딩할 수 있으며, 바로 그 점이 상호운용성을 만듭니다.
- 기밀성 없음암호화가 아닙니다. 키도, 기밀성도, 접근 제어도 없습니다. 디코딩된 메시지는 디코더에 붙여 넣는 누구에게나 읽힙니다.
- 결코 작아지지 않음압축도 아닙니다. 6비트 데이터가 8비트 문자 안에 실려 가므로 출력은 항상 입력보다 크고, 작아지는 법이 없습니다.
33%의 오버헤드는 정확하다
3바이트가 4문자가 되므로 Base64 출력은 항상 입력의 4/3, 즉 패딩 전 약 33% 더 큽니다. 900KB 이미지는 약 1.2MB의 텍스트가 되고, 이 팽창은 데이터가 가는 곳마다 따라다닙니다.
- 선로에서전송 비용: HTML이나 CSS에 포함된 데이터 URL은 텍스트로 다운로드되고 파싱되고 캐시되므로, 페이지를 불러올 때마다 추가 3분의 1을 치릅니다.
- 메모리에서메모리와 저장 비용: Base64 필드를 담은 JSON이나 XML 페이로드는 문자열로 유지되며, 일부 파이프라인은 값을 인코딩된 채로 한 번, 디코딩된 채로 한 번, 두 번 저장합니다.
- 사서함에서이메일은 이를 키웁니다. 전송을 위해 Base64로 인코딩된 첨부 파일은 선로에서 3분의 1 부풀기 때문에, 25MB 첨부 제한은 실제로 약 18MB의 파일을 뜻합니다.
Base64가 본전을 뽑는 자리
Base64가 존재하는 이유는 많은 채널이 텍스트 전용이기 때문입니다. 이메일 표준은 7비트 ASCII 시대에 쓰였고, JSON은 날바이트를 담을 수 없으며, URL은 바이너리 데이터에서 깨집니다. 그래서 바이트에 안전한 텍스트 표현이 다리가 됩니다.
이미지 → Base64 변환은 최대 4MiB의 PNG, JPEG, WebP, GIF에서 실제로 필요한 두 가지 형태를 만들어 줍니다. 미디어 타입 접두사가 붙은 완전한 데이터 URL과, 그 아래의 순수 Base64 페이로드입니다. 변환은 탭 안에서 일어나므로 크기 팽창을 직접 재는 동안에도 이미지는 기기를 떠나지 않습니다.
- 데이터 URL데이터 URL은 작은 자산을 인라인으로 넣습니다. data:image/png;base64,…는 아이콘이나 작은 플레이스홀더가 추가 요청 없이 CSS나 HTML 안에 실려 가게 합니다.
- 이메일과 MIME이메일 첨부는 SMTP가 텍스트용으로 설계됐기 때문에 Base64에 의존합니다. MIME은 바이너리 부분을 인코딩해 모든 중계를 무사히 통과하게 합니다.
- 토큰과 인증서토큰과 인증서—JWT 세그먼트, PEM 파일, HTTP Basic 자격 증명—는 Base64 또는 그 URL 안전 변형을 써서 바이너리 구조를 텍스트 프로토콜에 맞춥니다.
Base64는 보안 메커니즘이 아니다
인코딩된 모습이 불투명해 보이기 때문에 보호로 오인되곤 합니다. 사실은 아닙니다. 디코딩은 하찮고 즉각적이며 자격 증명도 필요 없습니다. 인코딩된 비밀을 안전하다고 여기는 것은 커밋된 코드와 로그에서 자격 증명이 새는 가장 흔한 원인 중 하나입니다.
논쟁을 끝내는 빠른 자가 점검이 있습니다. 그 “보호”를 벗기는 데 키도, 비밀도, 권한도 필요 없다면, 그것은 애초에 보호가 아니라 형식이었습니다. Base64는 설계상 이 점검을 통과하지 못합니다. 조율 없이 어느 수신자든 디코딩할 수 있게 하는 것이 존재 목적의 전부이기 때문입니다.
- 누구나 읽을 수 있음설정 파일에 Base64로 인코딩된 비밀번호는 절차만 추가된 평문 비밀번호입니다. 읽기 권한이 있는 사람은 이미 비밀을 갖고 있습니다.
- 여전히 자격 증명URL, 스크린샷, 버그 리포트에 나타나는 인코딩된 토큰도 여전히 자격 증명입니다. 원래 값과 똑같이 지우십시오.
- 진짜 보호 사용진짜 보호는 키를 쓰는 암호화, 검증을 위한 해싱, 혹은 그냥 값을 노출하지 않는 것입니다. 인코딩은 그 어느 것도 대신하지 못합니다.
깨진 Base64 디버깅
대부분의 Base64 버그는 방언 버그입니다. 고전 알파벳은 +와 /를 쓰고 =로 패딩합니다. URL 안전 변형은 -와 _로 바꾸고 패딩을 생략하는 경우가 많습니다. MIME은 76자마다 줄을 바꿉니다. 한 방언을 기대하는 디코더는 다른 방언을 거부하고, 오류 메시지가 어떤 방언을 원했는지 알려 주는 경우는 드뭅니다.
Base64 인코딩 / 디코딩은 방언을 직접 드러냅니다. UTF-8 텍스트, URL 안전 출력, 줄바꿈 처리 토글에 더해, 입력이 유효하지 않을 때—잘못된 문자, 불가능한 길이, 유효한 UTF-8이 아닌 바이트—명시적인 오류를 보여 주므로, 깨진 문자열이 어떤 가정부터 고쳐야 할지 알려 줍니다.
- 알파벳 불일치잘못된 알파벳: -나 _가 든 URL 안전 문자열은 엄격한 고전 디코더에 거부되고, 반대로 고전 +와 /는 URL 안전 처리를 깹니다.
- 패딩빠진 패딩: 패딩 방언은 길이가 4의 배수여야 하므로, 잘려 나간 = 꼬리는 데이터가 멀쩡해도 엄격한 파서를 실패하게 합니다.
- 끼어든 문자끼어든 문자: MIME 줄바꿈, 앞에 붙은 data:…;base64, 접두사, 이메일 클라이언트에서 붙여 온 공백은 모두 잘못된 입력으로 읽힙니다.
콘텐츠를 기기에 머무르게 하라
Base64 문자열은 대개 민감한 무언가의 조각입니다. 설정 파일, 토큰, 고객 메일로 향할 이미지. 아무 웹사이트에서 디코딩하는 것은 그 재료를 남의 로그에 붙여 넣는 것과 같습니다.
Toolars의 두 작업 공간은 모두 브라우저 탭 안에서만 실행됩니다. 텍스트나 이미지는 이미 기기에 있는 코드로 처리되며, 작업의 일부로 전송되는 일이 없습니다. 변환하는 동안 네트워크 모니터를 열어 보세요. 콘텐츠를 싣는 요청이 없습니다.
이 경계 덕분에 동료의 토큰 조각 디코딩, 인증서 블록 확인, 인라인 스타일시트용 제품 이미지 변환 같은 실제 작업에 이 도구들을 쓸 수 있습니다. 빠른 조회가 정보 공개로 바뀌지 않습니다.
Base64는 보통 JSON 안에 숨어 있다.
데이터 URL과 인코딩된 필드는 API 페이로드를 타고 이동합니다. 아무것도 어디에도 보내지 않고 파싱하고 검사하고 비교하는 리뷰 루틴을 익혀 보세요.