Developer Tools

개발자를 위한 Base64 인코딩 완벽 가이드

Base64 인코딩의 작동 원리, 사용 이유, 그리고 시스템 간 데이터를 안전하게 전달하기 위한 모범 사례를 알아보세요.

6분 읽기

Developer working on code

텍스트만 처리하는 시스템 간에 데이터를 전송할 때, 바이너리 데이터는 쉽게 손상될 수 있습니다. Base64 인코딩은 바이너리를 안전한 ASCII 호환 형식으로 변환하여 이 문제를 해결합니다.

이 종합 가이드에서는 Base64가 존재하는 이유와 올바르게 구현하는 방법을 살펴보겠습니다.

바이너리의 문제점

HTTP나 SMTP 같은 대부분의 현대 네트워크 프로토콜은 원래 텍스트 전송을 위해 설계되었습니다. 인코딩 없이 오래된 SMTP 서버로 이미지를 전송하려 하면, 서버가 특정 바이트를 파일 종료 명령으로 잘못 해석하여 전송이 실패할 수 있습니다.

"Base64는 암호화가 아닙니다. 전송 중 데이터 무결성을 보호하기 위한 변환 레이어입니다."

Base64의 실제 작동 방식

Base64는 원시 데이터를 바이너리 시퀀스로 변환한 뒤, 이를 6비트 단위로 분할합니다. 각 단위는 특정 영숫자 문자에 매핑됩니다.

변환 매핑을 간단히 살펴보면 다음과 같습니다:

10진수 값 문자 10진수 값 문자
0 - 25 A - Z 52 - 61 0 - 9
26 - 51 a - z 62 +
63 / 패딩 =

코드 예시

브라우저 내장 메서드인 btoa()atob()를 사용하면 JavaScript에서 임의의 문자열을 간단하게 인코딩할 수 있습니다.

// Encoding a string into Base64
const rawText = "Hello, FreeTools!";
const encoded = btoa(rawText);

console.log(encoded); // Output: SGVsbG8sIEZyZWVUb29scyE=

// Decoding it back
const decoded = atob(encoded);
console.log(decoded); // Output: Hello, FreeTools!

Base64를 사용해야 할 때

  • Data URL: 작은 이미지를 CSS나 HTML에 직접 삽입할 때(data:image/png;base64,...) HTTP 요청을 줄일 수 있습니다.
  • 이메일 첨부 파일: SMTP는 텍스트를 처리하므로, 첨부 파일은 MIME 프레임워크 내에서 Base64로 인코딩됩니다.
  • 시크릿 저장 (주의 필요): 암호화는 아니지만, Kubernetes와 같은 도구는 텍스트 기반 YAML 파일에 API 키를 안전하게 저장하기 위해 Base64를 사용합니다.

무료 Base64 Encoder/Decoder를 사용해 직접 확인해 보세요.