개발자라면 꼭 알아야 할 Base64 인코딩/디코딩 원리와 실습

2026. 2. 13. 21:43·Development/Backend
반응형

개발을 하다 보면 알 수 없는 영문 대소문자와 숫자가 섞여 있고, 끝이 = 또는 ==로 끝나는 긴 문자열을 마주칠 때가 있습니다. 바로 Base64 인코딩된 데이터입니다. 오늘은 이 Base64가 도대체 무엇인지, 왜 굳이 데이터 크기가 늘어나는 것을 감수하고 사용하는지, 그리고 파이썬(Python)으로 이를 어떻게 다루는지에 대해 정리해 보려고 합니다.

1. Base64란 무엇인가?

Base64는 이진 데이터(Binary Data)를 텍스트(ASCII 문자)로 변경하는 인코딩 방식 중 하나입니다. 컴퓨터 분야에서 '64'라는 숫자는 26을 의미합니다. 즉, 64진법을 사용한다는 뜻인데, 64개의 문자로 모든 데이터를 표현한다는 것이 핵심입니다.

  • 사용되는 문자: A-Z (26개), a-z (26개), 0-9 (10개), +, / (2개) = 총 64개
  • 패딩(Padding): 데이터를 24비트 단위로 맞추기 위해 끝부분에 = 문자를 채워 넣습니다. (그래서 Base64 문자열 뒤에 ==가 자주 보이는 것입니다.)

 

2. 왜 사용할까? (Base64의 목적)

"그냥 바이너리 그대로 보내면 되지, 왜 굳이 변환하나요?" 가장 큰 이유는 데이터 전송의 안전성 때문입니다.

우리가 사용하는 이메일(SMTP)이나 HTML 등 많은 통신 프로토콜은 기본적으로 텍스트 기반으로 설계되었습니다. 여기에 이미지나 오디오 같은 바이너리 파일을 그대로 넣으면, 시스템 간의 문자 처리 방식 차이로 인해 데이터가 깨지거나 손실될 위험이 있습니다.

Base64로 인코딩하면 모든 데이터가 안정한 ASCII 문자로만 구성되므로, 어떤 시스템을 거치더라도 데이터가 원본 그대로 전송됨을 보장받을 수 있습니다.

장점:

  • 통신 과정에서 바이너리 데이터 손실을 막아준다.
  • HTML이나 CSS 파일 내부에 이미지 등을 직접 텍스트 형태로 임베딩할 수 있다. (Data URI Scheme)

단점:

  • 6비트씩 묶어서 표현하기 때문에 데이터 크기가 원본보다 약 33% 커진다.
  • 사람이 읽을 수 없지만, 암호화 방식은 아니므로 보안 기능은 없다. (누구나 디코딩 가능)

 

3. Python으로 Base64 다루기

파이썬에서는 기본 내장 라이브러리인 base64를 통해 아주 쉽게 인코딩/디코딩을 할 수 있습니다.

import base64

# 인코딩할 문자열 (바이트로 변환 필요)
original_text = "안녕하세요, 뚝딱툴입니다."
original_bytes = original_text.encode('utf-8')

# 1. Base64 인코딩
encoded_bytes = base64.b64encode(original_bytes)
encoded_str = encoded_bytes.decode('utf-8')

print(f"인코딩 결과: {encoded_str}")
# 결과 예시: 5a6c5yTb... (읽을 수 없는 문자열)

# 2. Base64 디코딩
decoded_bytes = base64.b64decode(encoded_str)
decoded_text = decoded_bytes.decode('utf-8')

print(f"디코딩 결과: {decoded_text}")
# 결과: 안녕하세요, 뚝딱툴입니다.

 

4. 이미지를 Base64로 변환하기

웹 개발을 하다 보면 작은 아이콘 이미지를 별도 파일 요청 없이 HTML에 바로 넣고 싶을 때가 있습니다. 이럴 때도 유용합니다.

import base64

with open("image.png", "rb") as image_file:
    encoded_string = base64.b64encode(image_file.read())
    print(encoded_string.decode('utf-8'))

이렇게 나온 문자열을 HTML img 태그에 넣으면 브라우저가 이미지를 그려줍니다.
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA...">


5. 코딩 없이 바로 변환하고 싶다면?

개발 중에 디버깅을 하거나, 급하게 JWT 토큰 내용을 확인해야 할 때, 혹은 이미지를 텍스트로 바꿔야 할 때 매번 파이썬 코드를 짤 수는 없겠죠?

다양한 도구 사이트에서 Base64 변환 기능을 제공하고 있습니다.

  • 텍스트 ↔ Base64 변환
  • 실시간 인코딩/디코딩
  • 서버 전송 없이 클라이언트 브라우저에서 처리 (보안 안심)

즐겨찾기 해두시면 개발할 때 유용하게 쓰실 수 있을 겁니다.

👉 Base64 간편 변환기 바로가기:

https://ddtool.online/tools/base64-converter

 

Base64 인코더/디코더 - 뚝딱툴

텍스트와 파일을 Base64로 변환하거나 Base64를 원본으로 복원합니다

ddtool.online

 

 

 

 
 
저작자표시 비영리 변경금지 (새창열림)
'Development/Backend' 카테고리의 다른 글
  • [supabase] 이미 가입된 이메일 검증하기
  • [Java] Jackson JSON 처리 마스터하기
  • [Python] 문장에서 가장 긴 단어 찾기
  • [Python] 문자열 뒤집기
삿뿐삿뿐
삿뿐삿뿐
자바, 파이썬 등 개발 관련 정보와 블록체인, OpenAI 등 기술에 관한 정보를 남기는 블로그입니다.
  • 삿뿐삿뿐
    정보 남기기
    삿뿐삿뿐
  • 전체
    오늘
    어제
    • 전체보기 (39)
      • Development (23)
        • Mobile (3)
        • Web (1)
        • Backend (16)
      • Infra (7)
      • Projects (9)
        • DDTool (1)
        • Automation (8)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 태그

    oracle db
    JSON
    Nextjs15
    java
    ddtool
    파이썬 긴 단어찾기
    blogger
    vibecoding
    ChatGPT
    바이브코딩
    oracleDB
    파이썬
    웹개발
    OpenAI
    테스트데이터 생성
    python
    supabase
    ubuntu
    Autonomous Database
    Linux
    이미 가입된 이메일
    같은 네트워크
    Google OAuth
    claudecode
    User already registered
    뚝딱툴
    random data generation
    Python 긴 단어 찾기
    중복 이메일
    AI페어프로그래밍
  • hELLO· Designed By정상우.v4.10.6
삿뿐삿뿐
개발자라면 꼭 알아야 할 Base64 인코딩/디코딩 원리와 실습
상단으로

티스토리툴바