Base64 인코딩/디코딩

Base64는 바이너리 데이터를 ASCII 문자로 인코딩하는 방식입니다. 이메일 첨부파일, 데이터 URI, API 토큰 등에서 널리 사용됩니다. URL-safe 옵션은 +/= 문자를 URL에서 안전한 문자로 변환합니다.

텍스트 입력
Base64 출력

Base64 인코딩/디코딩이란?

Base64는 바이너리 데이터를 ASCII 문자열로 변환하는 인코딩 방식입니다. A-Z, a-z, 0-9, +, / 총 64개의 인쇄 가능한 문자를 사용하여 데이터를 표현합니다. 이메일 첨부파일(SMTP), 웹 이미지 데이터 URI, JWT 토큰, HTTP Basic 인증 등에서 광범위하게 쓰이며, 텍스트만 지원하는 시스템에서 바이너리 데이터를 안전하게 전송할 수 있게 해줍니다. 원본 대비 약 33% 크기가 증가하지만, 데이터 손실 없이 전달할 수 있다는 점에서 개발 현장에서 필수적인 도구입니다.

주요 기능

  • 인코딩/디코딩 전환: 탭 한 번으로 텍스트 → Base64 또는 Base64 → 텍스트 모드를 전환할 수 있습니다.
  • 실시간 변환: 입력과 동시에 결과가 출력되어 빠르게 확인할 수 있습니다.
  • URL-safe 옵션: +, /, = 문자를 URL에서 안전한 -, _ 문자로 대체합니다.
  • UTF-8 지원: 한글, 일본어, 이모지 등 모든 유니코드 문자를 정확하게 처리합니다.
  • 입출력 스왑: 결과를 입력으로 바로 전환하여 역변환을 수행할 수 있습니다.

사용 방법

  1. 상단의 '인코딩' 또는 '디코딩' 탭을 선택합니다.
  2. 왼쪽 입력창에 변환할 텍스트 또는 Base64 문자열을 입력합니다.
  3. '실시간' 옵션이 켜져 있으면 입력 즉시 오른쪽에 결과가 표시됩니다.
  4. URL 파라미터나 파일명에 사용할 경우 'URL-safe' 체크박스를 활성화하세요.
  5. '복사' 버튼으로 결과를 클립보드에 복사하거나, 스왑 버튼으로 입출력을 교환하세요.
  6. '지우기' 버튼으로 입출력 영역을 모두 초기화할 수 있습니다.

활용 사례

  • 이미지 Data URI: 작은 이미지를 Base64로 인코딩하면 HTML이나 CSS에 직접 삽입할 수 있어 HTTP 요청 수를 줄일 수 있습니다.
  • API 인증: HTTP Basic Auth에서 사용자명:비밀번호를 Base64로 인코딩하여 Authorization 헤더에 전달합니다.
  • JWT 토큰 분석: JWT의 헤더와 페이로드는 Base64url로 인코딩되어 있어 디코딩하면 내용을 확인할 수 있습니다.
  • 이메일 첨부파일: MIME 형식에서 바이너리 첨부파일을 Base64로 인코딩하여 텍스트 기반 이메일 프로토콜로 전송합니다.

팁과 주의사항

  • Base64 인코딩은 암호화가 아닙니다. 민감한 데이터는 AES 등 암호화를 별도로 적용하세요.
  • 인코딩 결과는 원본보다 약 33% 더 커집니다. 대용량 파일에는 적합하지 않습니다.
  • URL-safe 모드를 사용하면 쿼리 스트링이나 경로에 포함해도 문제가 발생하지 않습니다.
  • 디코딩 시 유효하지 않은 Base64 문자열을 입력하면 에러 메시지가 표시됩니다.

자주 묻는 질문

Q: Base64 인코딩은 암호화인가요?

아니요, Base64는 암호화가 아닙니다. 데이터 형식을 변환하는 인코딩 방식으로, 누구나 쉽게 디코딩할 수 있습니다. 보안이 필요한 데이터는 AES, RSA 같은 암호화 알고리즘을 적용해야 합니다.

Q: URL-safe Base64는 무엇인가요?

일반 Base64의 +, / 문자는 URL에서 특수한 의미를 가집니다. URL-safe Base64는 이를 -, _로 대체하고 패딩 문자(=)를 제거하여 URL이나 파일명에서 안전하게 사용할 수 있도록 합니다. JWT 토큰이 대표적인 사용 예입니다.

Q: 한글이나 특수문자도 인코딩할 수 있나요?

네, 가능합니다. 이 도구는 UTF-8 인코딩을 사용하므로 한글, 한자, 이모지 등 모든 유니코드 문자를 올바르게 Base64로 변환합니다.

Q: Base64 인코딩 결과가 원본보다 큰 이유는 무엇인가요?

Base64는 3바이트의 데이터를 4개의 ASCII 문자로 변환합니다. 따라서 결과물은 원본보다 약 33%(4/3배) 더 큽니다. 이는 64개의 안전한 문자만 사용하기 위한 트레이드오프입니다.

Q: 이미지를 Base64로 변환해서 사용하는 것이 항상 좋은가요?

아닙니다. 작은 아이콘(수 KB 이하)은 Data URI로 삽입하면 HTTP 요청을 줄일 수 있어 유리합니다. 하지만 큰 이미지는 33% 크기 증가와 브라우저 캐싱 불가 때문에 일반 이미지 파일로 제공하는 것이 더 효율적입니다.

Q: Base64와 Base64url의 차이는 무엇인가요?

Base64는 RFC 4648에 정의된 표준 인코딩이고, Base64url은 같은 RFC의 URL/파일명 안전 변형입니다. +를 -로, /를 _로 대체하며 패딩(=)을 생략합니다. JWT, OAuth 토큰 등에서 Base64url이 사용됩니다.

Q: Base64 디코딩 시 에러가 발생하는 원인은?

잘못된 문자가 포함되었거나, 패딩이 올바르지 않거나, URL-safe 인코딩된 문자열을 일반 모드로 디코딩하려 할 때 에러가 발생합니다. URL-safe 옵션을 확인하고, 문자열에 공백이나 줄바꿈이 포함되지 않았는지 점검하세요.

Q: 모든 처리가 브라우저에서 이루어지나요?

네, 입력된 데이터는 서버로 전송되지 않으며 모든 인코딩/디코딩 작업이 사용자의 브라우저에서 직접 처리됩니다. 개인정보나 민감한 데이터도 안심하고 사용할 수 있습니다.

Q: Base64 인코딩은 어떤 프로그래밍 언어에서 지원하나요?

대부분의 프로그래밍 언어에서 기본 라이브러리로 지원합니다. JavaScript의 btoa()/atob(), Python의 base64 모듈, Java의 java.util.Base64, PHP의 base64_encode()/base64_decode() 등이 있습니다.

Q: Base64 인코딩된 데이터의 길이를 미리 계산할 수 있나요?

네, 계산 공식은 4 × ceil(n/3)입니다. 여기서 n은 원본 바이트 수입니다. 예를 들어 100바이트 데이터는 136자의 Base64 문자열이 됩니다. 패딩을 포함하면 4의 배수로 올림됩니다.