Base64 인코딩 / 디코딩/ 클라이언트 처리
텍스트와 Base64 간 상호 변환. 유니코드, 한국어, 이모지, URL 안전 모드 지원. 데이터는 서버로 전송되지 않습니다.
이 도구가 도움이 되었나요?
Base64 인코딩이란 무엇인가
Base64는 64개의 인쇄 가능한 ASCII 문자를 사용하여 바이너리 데이터를 표현하는 인코딩 방식입니다. 3바이트(24비트)마다 4개의 문자로 인코딩하며, 출력에는 A-Z, a-z, 0-9, +, / 의 64개 문자와 = 패딩 문자만 포함됩니다. Base64는 암호화 알고리즘이 아니며,누구든 쉽게 디코딩할 수 있는 인코딩 형식으로 보안을 제공하지 않습니다.
Base64의 일반적인 용도
이메일 첨부파일: MIME 프로토콜은 바이너리 첨부파일에 Base64를 사용합니다. Data URL: 이미지, 글꼴 등의 리소스를 CSS나 HTML에直接 내장하여 HTTP 요청을 줄입니다. API 전송: JSON으로 바이너리 데이터(이미지, PDF等)를 전송할 때 Base64로 인코딩합니다. JWT 토큰: JWT의 헤더와 페이로드 부분은 Base64 인코딩된 JSON입니다. 기본 인증: HTTP Basic Auth는 사용자명과 비밀번호를 Base64 인코딩하여 전송합니다.
Base64 인코딩 후 크기는 얼마나 증가하는가
Base64 인코딩은 데이터 크기를大约 33% 증가시킵니다. 3바이트의 원본 데이터가 4개의 문자로 인코딩되므로 인코딩된 크기 = ceil(원본 크기 / 3) × 4입니다. 따라서大용량 파일의 경우 바이너리를直接 전송하는 것이更 효율적입니다. 하지만 JSON, XML, URL等 텍스트 전용 채널로 바이너리 데이터를 전송해야 하는 경우 Base64는 표준 솔루션입니다.
코드 예제
// Encode (ASCII only)
const encoded = btoa("Hello, World!");
// Decode
const decoded = atob(encoded);
// Encode Unicode (CJK, emoji, etc.)
function b64Encode(str) {
const bytes = new TextEncoder().encode(str);
const bin = String.fromCharCode(...bytes);
return btoa(bin);
}
function b64Decode(b64) {
const bin = atob(b64);
const bytes = Uint8Array.from(bin, c => c.charCodeAt(0));
return new TextDecoder().decode(bytes);
}import base64
# Encode
text = "Hello, 世界 🌏"
encoded = base64.b64encode(text.encode("utf-8")).decode()
print(encoded)
# Decode
decoded = base64.b64decode(encoded).decode("utf-8")
print(decoded)
# URL-safe variant
url_safe = base64.urlsafe_b64encode(
text.encode("utf-8")
).decode().rstrip("=")import "encoding/base64"
// Encode
encoded := base64.StdEncoding.
EncodeToString([]byte("Hello, World!"))
// Decode
decoded, err := base64.StdEncoding.
DecodeString(encoded)
// URL-safe
urlSafe := base64.URLEncoding.
EncodeToString([]byte("Hello, World!"))# Encode echo -n "Hello, World!" | base64 # Decode echo "SGVsbG8sIFdvcmxkIQ==" | base64 -d # URL-safe encode (GNU coreutils) echo -n "Hello" | base64 | tr '+/' '-_' | tr -d '='