Curious TechieDev Toolbox
전체 가이드/인코딩 & 암호학8 min read

Base64 인코딩 원리 및 기술 가이드

Base64의 동작 원리, 6비트 텍스트 변환 방식, URL-safe 변형 및 암호화와의 차이점 해설.

핵심 요약 (Key Takeaways)
  • Base64는 RFC 4648에 정의된 64개 ASCII 문자를 활용하는 바이너리-텍스트 변환 인코딩입니다.
  • 3바이트(24비트)를 4개의 6비트 문자로 변환하므로 데이터 크기가 약 33% 증가합니다.
  • Base64는 암호화가 아닙니다. 비밀키가 없으므로 누구나 원본으로 디코딩할 수 있습니다.
  • URL-safe Base64는 +-로, /_로 대체하여 안전하게 전송합니다.

초기 이메일(SMTP)과 URL 쿼리 등 인터넷 통신 채널은 7비트 ASCII 텍스트만을 전달하도록 설계되었습니다. 이미지, 파일 첨부, 전자 서명과 같은 순수 8비트 바이너리 데이터를 안전하게 전송하기 위해 고안된 것이 바로 Base64 인코딩입니다.

1. Base64란 무엇인가?

Base64는 RFC 4648로 표준화된 인코딩 방식입니다. 임의의 바이너리 바이트 시퀀스를 출력 가능한 64개의 ASCII 문자(대문자 A-Z, 소문자 a-z, 숫자 0-9, 기호 +/)로 안전하게 변환합니다.

2. 3바이트를 4문자로 변환하는 수학적 원리

알고리즘은 입력 데이터를 24비트(3바이트) 단위로 묶은 뒤, 이를 4개의 6비트 묶음(2^6 = 64)으로 나눕니다. 각 6비트 정수값이 64문자 색인 테이블의 인덱스가 됩니다:

입력 3바이트: [01001101] [01100001] [01101110] (24비트 = "Man")
출력 4블록: [010011] [010110] [000101] [101110]
Base64 인덱스: 19 22 5 46
Base64 출력: T W F u => "TWFu"

3. 등호(=) 패딩이 필요한 이유

입력 바이트 길이가 3으로 나누어떨어지지 않을 경우, 마지막 6비트 묶음을 맞추기 위해 0 비트를 채우고 끝에 1개 또는 2개의 등호(=)를 패딩으로 붙여 수신 측에서 정확한 원래 길이를 복원할 수 있도록 합니다.

4. URL 안전(URL-Safe) Base64 변형

표준 Base64의 +/는 URL에서 예약된 특수 기호입니다. JWT나 OAuth에서 쓰이는 URL-Safe Base64는 +-로, /_로 치환하고 끝부분의 = 패딩을 생략합니다.

5. "Base64 암호화"라는 흔한 오해

Base64는 절대 암호화가 아닙니다. 비밀키나 수학적 보호 장치가 전혀 없으므로 문자열을 가진 사람은 누구나 즉시 평문으로 복원할 수 있습니다. 비밀번호나 기밀 인증 토큰을 보호하는 용도로 Base64만을 사용해서는 안 됩니다.