본문 바로가기

Base64 인코딩이란? 개념부터 실제 사용법까지 한 번에 정리

이미지를 텍스트로 바꾸는 Base64 인코딩의 원리와 활용처, 직접 인코딩하고 디코딩하는 방법까지 초보자 눈높이로 쉽게 설명합니다


Base64 인코딩이란? 개념부터 실제 사용법까지 한 번에 정리

개발 문서나 설정 파일을 보다 보면 AAAAB3NzaC1yc2E 처럼 알파벳과 숫자가 길게 늘어선 문자열을 마주칠 때가 있습니다. 이메일에 첨부한 이미지가 코드 안에 텍스트로 박혀 있기도 하고, API 키나 인증 정보가 비슷한 형태로 들어 있기도 합니다. 대부분 Base64로 인코딩된 데이터입니다. 이름은 자주 보이지만 정확히 무엇이고 왜 쓰는지는 의외로 설명하기 어렵습니다. 이 글에서 개념과 원리, 실제 사용법까지 정리합니다.

Base64 인코딩이란 무엇인가

Base64 인코딩이란 이미지, 파일, 한글 텍스트처럼 컴퓨터가 다루는 모든 데이터를 64개의 인쇄 가능한 문자만으로 표현하는 변환 방식입니다. 사용하는 문자는 영문 대문자 26개, 소문자 26개, 숫자 10개, 그리고 기호 두 개(+, /)를 더한 총 64개입니다. 여기에 길이를 맞추기 위한 채움 문자 =이 추가로 쓰입니다.

중요한 점은 Base64가 암호화가 아니라는 사실입니다. 비밀번호처럼 내용을 숨기는 기술이 아니라, 그저 데이터의 모양을 바꾸는 변환일 뿐입니다. 누구나 디코딩하면 원본을 그대로 복원할 수 있습니다. 이 차이를 헷갈리면 보안 사고로 이어지기 때문에 처음부터 분명히 짚고 가야 합니다.

Base64는 데이터를 안전하게 숨기는 도구가 아니라, 텍스트만 다룰 수 있는 환경에서 이진 데이터를 깨지지 않게 전달하기 위한 운반용 포장지에 가깝습니다.

Base64가 작동하는 원리

컴퓨터는 모든 데이터를 0과 1의 비트로 저장합니다. Base64는 이 비트를 6비트 단위로 잘라서 처리합니다. 6비트로 표현할 수 있는 경우의 수가 정확히 64가지(2의 6제곱)이기 때문에 64개의 문자에 하나씩 대응시킬 수 있습니다.

실제 변환은 8비트(1바이트)씩 들어오는 원본을 6비트 단위로 다시 묶는 과정입니다. 8과 6의 최소공배수가 24이므로, 원본 3바이트(24비트)가 Base64 문자 4개(24비트)로 바뀝니다. 영문 단어 Man을 예로 들면 다음과 같이 변환됩니다.

단계Man
아스키 코드7797110
8비트 이진수010011010110000101101110
6비트 재분할010011 / 010110 / 000101 / 101110
Base64 결과T / W / F / u → TWFu

만약 원본 길이가 3의 배수로 딱 떨어지지 않으면 어떻게 될까요. 이때 부족한 자리를 = 기호로 채웁니다. 그래서 Base64 문자열 끝에 =이나 ==이 붙는 경우를 자주 보게 됩니다.

참고: Base64로 변환하면 데이터 용량이 원본보다 약 33퍼센트 늘어납니다. 3바이트가 4문자로 바뀌기 때문입니다. 그래서 용량이 큰 파일을 무작정 Base64로 변환하면 오히려 전송 효율이 떨어질 수 있습니다.

Base64를 실제로 쓰는 곳

Base64는 텍스트만 안전하게 오갈 수 있는 통로에 이진 데이터를 실어 보낼 때 쓰입니다. 대표적인 활용처는 다음과 같습니다.

  • 이메일 첨부파일: 이메일 본문은 원래 텍스트만 전송하도록 설계됐습니다. 이미지나 PDF를 보내려면 Base64로 변환해 텍스트처럼 실어 보냅니다.
  • 웹페이지 내 이미지 삽입: HTML이나 CSS에 작은 아이콘을 data URI 형태로 직접 박아 넣을 때 사용합니다. 별도 이미지 파일 요청 없이 한 번에 불러올 수 있습니다.
  • API 인증 정보 전달: 아이디와 비밀번호를 콜론으로 이어 붙인 뒤 Base64로 인코딩해 HTTP 헤더에 담는 Basic 인증 방식이 널리 쓰입니다.
  • JSON과 토큰: 로그인에 쓰이는 JWT 토큰의 각 부분도 Base64 방식으로 인코딩되어 있습니다.

특히 웹 개발에서 작은 로고나 단색 아이콘을 data URI로 처리하면 서버 요청 수를 줄여 페이지 로딩을 약간 빠르게 만들 수 있습니다. 다만 큰 이미지에는 앞서 말한 용량 증가 문제 때문에 권하지 않습니다.

Base64 인코딩과 디코딩 방법

직접 변환해 보는 방법은 크게 세 가지입니다. 상황에 맞게 고르면 됩니다.

1. 웹 도구 사용하기

가장 간편한 방법입니다. 브라우저에서 텍스트나 파일을 붙여 넣으면 바로 변환됩니다. 코드를 다룰 줄 몰라도 누구나 쓸 수 있어, 설정 파일에 박힌 문자열을 빠르게 풀어 보고 싶을 때 유용합니다. 온라인 Base64 인코더를 이용하면 텍스트와 이미지를 양방향으로 인코딩하고 디코딩할 수 있습니다.

2. 명령어로 변환하기

리눅스나 맥 터미널에서는 기본 제공되는 base64 명령으로 바로 처리할 수 있습니다.

  • 인코딩: echo -n '안녕' | base64
  • 디코딩: echo '64191x...' | base64 --decode

3. 프로그래밍 언어 함수 사용하기

자바스크립트는 btoa(), atob() 함수를, 파이썬은 base64 모듈을 기본 제공합니다. 코드 안에서 자동으로 처리해야 할 때 적합합니다.

팁: 결과 문자열 끝에 =이 한두 개 붙었다면 정상입니다. 반대로 디코딩이 자꾸 실패한다면 문자열을 복사하는 과정에서 줄바꿈이나 공백이 섞여 들어갔을 가능성이 높습니다. 앞뒤 공백부터 확인해 보세요.

참고로 QR코드 안에도 짧은 텍스트나 URL이 인코딩되어 담깁니다. 변환한 데이터를 오프라인 자료나 명함에 담아 공유하고 싶다면 QR코드 생성기로 만들어 두면 스마트폰으로 바로 읽어 들일 수 있습니다.

Base64 사용 시 주의할 점

편리한 도구지만 오해하면 위험한 지점이 몇 가지 있습니다. 정리하면 다음과 같습니다.

  • 보안 수단이 아닙니다: 비밀번호나 개인정보를 Base64로 인코딩했다고 안전해지지 않습니다. 누구나 즉시 디코딩할 수 있으므로 민감 정보는 반드시 별도의 암호화를 거쳐야 합니다.
  • 용량이 늘어납니다: 약 33퍼센트 커지므로 대용량 파일을 그대로 인코딩해 전송하면 비효율적입니다.
  • URL에 쓸 때는 변형이 필요합니다: 기본 Base64에 포함된 + 와 / 기호는 URL에서 다른 의미로 해석될 수 있어, 이를 - 와 _ 로 바꾼 URL 안전 변형(Base64url)을 사용합니다.

Base64는 데이터를 숨기는 자물쇠가 아니라, 깨지기 쉬운 짐을 안전하게 옮기기 위한 포장 방식입니다. 개념만 정확히 잡아 두면 개발 문서를 읽을 때 막힘이 한결 줄어듭니다. 낯선 문자열을 만났다면 웹 인코더에 그대로 붙여 넣어 디코딩해 보고, 끝에 =이 붙는 이유와 용량이 늘어나는 원리를 한 번 직접 확인해 보세요. 원리를 체감하는 순간 더 이상 암호처럼 보이지 않을 것입니다.

3일 무료체험큰손탐지기, 지금 바로 시작하세요

설치 없이 웹에서 바로 사용 가능 · PC & 모바일 지원

무료체험 시작
카카오톡 상담