Base64 인코더/디코더

Base64 인코더/디코더

Base64, Base32, Hex, Base58 등 인코딩 & 디코딩 — 빠르고 안전하며 서버 전송 없음.

Base64 인코딩이란?

Base64는 RFC 4648에 정의된 바이너리-텍스트 인코딩 방식입니다. 바이너리 데이터를 64개 ASCII 문자(A-Z, a-z, 0-9, +, /)로 표현하여 이메일(MIME), HTTP 헤더, URL 등 텍스트 기반 프로토콜에서 안전하게 전송할 수 있게 합니다.

"Base64"라는 이름은 사용되는 64개 문자 알파벳에서 유래합니다. 각 문자는 정확히 6비트의 데이터를 나타내므로 3바이트(24비트)의 입력이 4개의 Base64 문자를 생성합니다. 이로 인해 약 33%의 크기 증가가 발생하며, 이것이 텍스트 호환성을 위한 대가입니다.

Base 인코딩 예제

실제 사용되는 예제를 바로 시도해 보세요. 디코딩 → 버튼을 클릭하면 예제가 도구에 자동으로 로드됩니다.

포맷설명샘플시도
Base64URLJWT 인증 토큰eyJhbGciOiJIUzI1…
Base64Data URI — 1×1 투명 PNGdata:image/png;ba…
Base64 PEMPEM 공개키 인증서-----BEGIN PUBLIC…
Base58비트코인 제네시스 블록 주소1A1zP1eP5QGefi2D…
Base32TOTP 인증기 시크릿JBSWY3DPEHPK3PXP
Hex빈 문자열의 SHA-256 해시e3b0c44298fc1c14…
Base85Ascii85 인코딩 데이터9jqo^BlbD-BleB1D…
Base91Base91 라운드트립 샘플fPNKd
Base62단축 URL / 고유 ID7N42dgm5tFLK9N8M…
Base64 MIME이메일 첨부파일 (76자 줄바꿈)TWFuIGlzIGRpc3Rp…

Base 인코딩 포맷 비교

이 도구는 11개의 Base 인코딩 포맷을 지원합니다. 각 포맷은 효율성, 문자 세트, 사용 사례에서 서로 다른 장단점을 가집니다:

포맷알파벳오버헤드사용 사례
Base64A-Z, a-z, 0-9, +, /+33%범용, MIME 이메일
Base64URLA-Z, a-z, 0-9, -, _+33%JWT, OAuth, URL
Base32A-Z, 2-7+60%TOTP, DNS, 대소문자 무관
Hex0-9, A-F+100%색상, MAC, 해시
Base581-9, A-H, J-N, P-Z, a-k, m-z+37%비트코인, IPFS
Base620-9, A-Z, a-z+36%단축 URL, 고유 ID
Base85! ~ u (ASCII 33-117)+25%PostScript, PDF, ZeroMQ
Base9191개 인쇄 가능 ASCII+14-23%최대 효율

주요 사용 사례

  • JWT 토큰 — 헤더와 페이로드가 Base64URL로 인코딩됩니다. 디코딩하여 만료 시간, 발급자 등의 클레임을 확인할 수 있습니다.
  • PEM 인증서 — TLS/SSL 인증서는 -----BEGIN CERTIFICATE----- 헤더와 함께 Base64를 사용합니다. 디코딩하여 인증서 세부 정보를 확인할 수 있습니다.
  • Data URI — HTML/CSS에서 data:image/png;base64,... 형태로 이미지를 임베드합니다. 파일을 인코딩하여 Data URI를 생성할 수 있습니다.
  • 이메일 첨부파일 — MIME은 76자 줄 바꿈과 함께 Base64를 사용하여 이메일의 바이너리 첨부파일을 인코딩합니다.
  • 비트코인 주소 — Base58Check 인코딩은 혼동되기 쉬운 문자(0, O, I, l)를 제거하여 사람이 읽기 쉬운 주소를 만듭니다.
  • TOTP 시크릿 — Google Authenticator는 2단계 인증 설정에 Base32로 인코딩된 시크릿을 사용합니다.

자주 발생하는 Base 인코딩 오류와 해결 방법

잘못된 패딩

증상: Invalid padding: expected 0-2 '=' characters 또는 디코딩이 조용히 실패합니다.

원인: Base64 문자열의 길이는 4의 배수여야 합니다. 누락된 = 패딩 문자가 디코더를 중단시킵니다.

해결: 문자열 길이가 4의 배수가 될 때까지 = 문자를 추가하세요. 이 도구는 자동으로 복구합니다 — "자동 복구: 패딩 추가" 메시지를 확인하세요.

Base64 문자열의 잘못된 문자

증상: 디코딩 시 Invalid character 오류가 발생합니다.

원인: 문자열에 Base64 알파벳 외의 문자가 포함되어 있습니다. 흔한 원인: 표준 Base64 디코더에서 -_(Base64URL 문자) 사용.

해결: 문자열이 Base64URL로 인코딩되었는지 확인하세요(+/ 대신 -_ 사용). 올바른 포맷을 선택하거나 자동 감지가 식별하도록 하세요.

디코딩 결과가 깨지거나 읽을 수 없음

증상: 디코딩된 결과에 임의의 문자나 깨진 글자가 포함됩니다.

원인: 잘못된 인코딩 포맷이 선택되었습니다. 예를 들어, Base32 문자열을 Base64로 디코딩하면 의미 없는 결과가 나옵니다.

해결: 자동 감지를 사용하여 올바른 포맷을 식별하거나, 의미 있는 결과가 나올 때까지 다른 포맷을 수동으로 시도하세요.

Base64URL과 Base64 혼동

증상: JWT 토큰이 표준 Base64 디코더에서 디코딩에 실패합니다.

원인: JWT는 +-로, /_로 대체하고 패딩을 생략하는 Base64URL 인코딩을 사용합니다.

해결: Base64URL 포맷을 선택하거나, JWT를 붙여넣으면 자동 감지가 처리합니다(eyJ로 시작하는 문자열은 JWT/Base64URL로 자동 인식).

홀수 길이 Hex 문자열

증상: Hex 디코딩 시 Odd-length hex string 오류가 발생합니다.

원인: Hex 인코딩은 바이트당 2개의 문자를 사용하므로 전체 길이가 짝수여야 합니다. 홀수 길이 문자열은 선행 0이 누락된 것입니다.

해결: 길이를 짝수로 만들기 위해 앞에 0을 추가하세요. 예: FFF0FFF로 변경.

프로그래밍 언어별 Base 인코딩

Base64 인코딩 및 디코딩은 모든 주요 프로그래밍 언어의 표준 라이브러리에서 제공됩니다:

언어모듈인코딩디코딩
Node.jsBuffer (내장)Buffer.from(str).toString('base64')Buffer.from(b64, 'base64').toString()
Pythonbase64 (내장)base64.b64encode(data)base64.b64decode(s)
Javajava.util.Base64Base64.getEncoder().encodeToString(bytes)Base64.getDecoder().decode(s)
Goencoding/base64base64.StdEncoding.EncodeToString(data)base64.StdEncoding.DecodeString(s)
.NET/C#System.ConvertConvert.ToBase64String(bytes)Convert.FromBase64String(s)
PHPCore (내장)base64_encode($data)base64_decode($s)
RubyBase64 (내장)Base64.strict_encode64(data)Base64.strict_decode64(s)

사용 방법

  1. 위의 버튼을 사용하여 인코딩 또는 디코딩 모드를 선택합니다.
  2. 인코딩 모드에서 텍스트를 입력하거나 붙여넣고, 포맷을 선택하면 인코딩된 결과가 즉시 표시됩니다.
  3. 디코딩 모드에서 인코딩된 문자열을 붙여넣으면 도구가 포맷을 자동 감지하여 디코딩합니다.
  4. 디코딩 결과가 JSON, 이미지 또는 PDF인 경우 적절한 뷰어가 자동으로 표시됩니다.
  5. 코드 스니펫을 사용하여 HTML, CSS, Node.js, Python 등에서 바로 사용할 수 있는 코드를 복사할 수 있습니다.
  6. 효율 비교를 통해 다양한 포맷의 크기 차이를 확인할 수 있습니다.

Base64 vs Base32 vs Base58

항목Base64Base32Base58
문자 수64 (대소문자 구분)32 (대소문자 무관)58 (혼동 문자 제외)
오버헤드+33%+60%+37%
패딩= (0-2)= (0-6)없음
URL 안전아니오 (+, /)
적합한 용도이메일, API, Data URITOTP, DNS, 파일명비트코인, 사람이 읽기 쉬운 ID

기술 레퍼런스

지원하는 11개 Base 인코딩 포맷의 전체 사양 참조표:

포맷표준알파벳크기입력:출력패딩최대 줄 길이
Base64RFC 4648 §4A-Z, a-z, 0-9, +, /643:4= (0-2)
Base64URLRFC 4648 §5A-Z, a-z, 0-9, -, _643:4선택적
Base64 MIMERFC 2045A-Z, a-z, 0-9, +, /643:4= (0-2)76 (CRLF)
Base64 PEMRFC 7468A-Z, a-z, 0-9, +, /643:4= (0-2)64 (LF)
Base32RFC 4648 §6A-Z, 2-7325:8= (0/1/3/4/6)
Base32 HexRFC 4648 §70-9, A-V325:8= (0/1/3/4/6)
HexRFC 4648 §80-9, A-F161:2없음
Base58Bitcoin wiki1-9, A-H, J-N, P-Z, a-k, m-z58~1:1.37없음
Base62사실상 표준0-9, A-Z, a-z62~1:1.34없음
Base85Ascii85! ~ u (33-117)854:5없음
Base91basE9191개 인쇄 가능 ASCII91~1:1.23없음

자주 묻는 질문

Base64 인코딩은 암호화와 같은 건가요?

아닙니다. Base64는 인코딩이지 암호화가 아닙니다. 누구나 키 없이 Base64를 디코딩할 수 있습니다. 보안을 위해서는 AES나 RSA 같은 실제 암호화 알고리즘을 사용하세요. Base64만으로 민감한 데이터를 보호하지 마세요.

Base64는 왜 파일 크기를 33% 증가시키나요?

Base64는 입력 3바이트를 6비트 그룹을 사용하여 4개의 ASCII 문자로 매핑합니다. 4/3 ≈ 1.333이므로 출력은 항상 입력보다 약 33% 커집니다. 이것은 ASCII 문자만 지원하는 프로토콜을 통한 안전한 텍스트 전송을 위한 대가입니다.

표준 Base64 대신 Base64URL을 언제 사용해야 하나요?

인코딩된 문자열이 URL이나 파일명에 포함될 때 Base64URL을 사용하세요. 표준 Base64는 URL에서 특별한 의미를 가진 +/를 사용합니다. Base64URL은 이를 -_로 대체하고 패딩을 생략합니다. JWT 토큰은 항상 Base64URL을 사용합니다.

Base32와 Base64의 차이점은 무엇인가요?

Base32는 대문자(A-Z)와 숫자 2-7만 사용하여 대소문자를 구분하지 않으며 약 60%의 크기 오버헤드가 있습니다. Base64는 64개 문자(대소문자 구분)를 사용하며 약 33%의 오버헤드가 있습니다. Base32는 TOTP 시크릿이나 대소문자 구분이 문제가 되는 시스템에 적합합니다.

이미지 같은 바이너리 파일도 Base64로 인코딩할 수 있나요?

네. Base64는 HTML/CSS에서 Data URI(data:image/png;base64,...)로 이미지를 임베드하거나, 이메일 첨부파일(MIME)을 인코딩하거나, JSON API를 통해 바이너리 데이터를 전송할 때 널리 사용됩니다.

Base58은 왜 특정 문자를 제외하나요?

Base58은 주소를 읽을 때 시각적 혼동을 방지하기 위해 0(숫자), O(대문자 o), I(대문자 i), l(소문자 L)을 제거합니다. 이로 인해 비트코인 주소와 사람이 읽기 쉬운 식별자에 적합합니다.

이 도구로 인코딩할 수 있는 최대 크기는 얼마인가요?

이 도구는 최대 10MB 파일을 지원합니다. 모든 처리가 브라우저에서 클라이언트 측으로 이루어지므로 성능은 기기에 따라 다릅니다. 텍스트 입력에는 엄격한 제한이 없지만, 매우 큰 입력(1MB 이상)은 처리가 느려질 수 있습니다.

토큰 같은 민감한 데이터를 여기에 붙여넣어도 안전한가요?

네. 모든 처리는 JavaScript를 사용하여 브라우저에서 완전히 이루어집니다. 데이터가 서버로 전송되지 않습니다. 브라우저 개발자 도구의 네트워크 탭에서 직접 확인할 수 있습니다.

기능

멀티 포맷 지원

Base64, Base64URL, MIME, PEM, Base32, Base32 Hex, Hex, Base58, Base62, Base85, Base91 등 11개 포맷을 하나의 도구에서 인코딩 및 디코딩합니다.

자동 감지

인코딩된 문자열을 붙여넣으면 도구가 자동으로 포맷을 감지합니다 — JWT 토큰, PEM 인증서, Data URI, 16진수 문자열 등을 지원합니다.

스마트 결과 미리보기

디코딩된 결과가 자동으로 분석됩니다. JSON은 구문 강조, 이미지는 인라인 미리보기, 바이너리 데이터는 16진수 덤프로 표시됩니다.

코드 스니펫

HTML <img>, CSS background-image, Node.js Buffer, Python base64, JavaScript atob, PowerShell 등 바로 사용할 수 있는 코드를 제공합니다.

파일 지원

파일을 드래그 앤 드롭하여 인코딩하거나, 인코딩된 문자열을 다운로드 가능한 파일로 디코딩할 수 있습니다. 최대 10MB까지 모든 파일 유형을 지원합니다.

100% 개인정보 보호

모든 처리는 JavaScript를 사용하여 브라우저에서 이루어집니다. 어떤 데이터도 서버로 전송되지 않습니다. 프로덕션 토큰과 민감한 데이터에도 안전하게 사용할 수 있습니다.

개인정보 보호

데이터는 JavaScript를 사용하여 브라우저에서 완전히 처리됩니다. 어떤 데이터도 서버로 전송되지 않습니다. 모든 인코딩, 디코딩, 포맷 감지, 파일 처리가 로컬에서 이루어집니다. 브라우저의 개발자 도구를 열고 네트워크 탭을 확인하여 직접 검증할 수 있습니다. 이 도구는 프로덕션 데이터, API 키, 인증서, 민감한 자격 증명에도 안전하게 사용할 수 있습니다.