0Pricing
Cryptology Academy · 강의

Base64 인코딩: 작동 방식

이메일, JWT, 데이터 전송에 사용되는 인코딩 방식인 Base64의 원리를 알아봅니다.

Base64 인코딩: 작동 방식은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

이진 데이터에 텍스트 표현이 필요한 이유

이메일, HTTP 헤더, XML을 비롯한 많은 시스템은 텍스트를 처리하도록 설계되었지만 임의의 이진 데이터는 처리하지 못했습니다. 0x00(널) 또는 0x1A(제어 문자) 바이트 값은 구문 분석 실패나 데이터 손상을 일으킬 수 있습니다.

Base64 인코딩은 임의의 이진 데이터를 텍스트만 처리하는 시스템에서 안전한 ASCII 문자 집합으로 변환하므로, 이미지와 인증서 같은 이진 콘텐츠를 텍스트 기반 프로토콜에 포함할 수 있습니다.

8비트 바이트를 6비트 그룹으로 묶기

Base64는 3개의 8비트 바이트(총 24비트)를 가져와 네 개의 6비트 그룹으로 나눕니다. 각 6비트 그룹은 0부터 63까지의 값을 나타내며, 이 값은 Base64 알파벳의 한 문자에 대응합니다.

이 3 대 4 비율에 따라 입력 3바이트마다 출력 문자 4개가 생성되므로 크기가 33% 증가합니다. 3바이트 = 24비트 = 6비트 그룹 4개이므로 계산이 정확히 맞아떨어집니다.

Base64 알파벳

Base64 알파벳은 64개의 문자로 구성됩니다. 대문자 A-Z(인덱스 0-25), 소문자 a-z(인덱스 26-51), 숫자 0-9(인덱스 52-61), 더하기 기호 +(인덱스 62), 슬래시 /(인덱스 63)입니다.

이 알파벳은 텍스트 시스템에서 문제를 일으킬 수 있는 모든 제어 문자와 대부분의 문장 부호를 피합니다. Base64 출력의 모든 문자는 사실상 모든 텍스트 프로토콜에서 안전하게 사용할 수 있는 인쇄 가능한 ASCII 문자입니다.

= 기호로 패딩하기

입력 길이가 3바이트의 배수가 아니면 패딩이 필요합니다. 1바이트가 남으면 12비트 그룹으로 채워져 Base64 문자 2개와 그 뒤의 "=="가 생성됩니다. 2바이트가 남으면 Base64 문자 3개와 그 뒤의 "="가 생성됩니다.

= 패딩 기호는 인코딩된 데이터가 아닙니다. 마지막 블록이 3바이트보다 짧다는 것을 디코더에 알립니다. 또한 출력 길이가 항상 문자 4개의 배수가 되도록 합니다.

인코딩 예: Man

"Man"의 ASCII 값은 M=77 (01001101), a=97 (01100001), n=110 (01101110)입니다. 연결하면 010011010110000101101110입니다.

이를 6비트 그룹으로 나누면 010011 | 010110 | 000101 | 101110 = 19 | 22 | 5 | 46입니다. Base64 알파벳에서 찾아보면 19=T, 22=W, 5=F, 46=u입니다. "Man"은 "TWFu"로 인코딩됩니다.

Base64url 변형

표준 Base64에서 사용하는 +와 /는 URL과 파일 이름에서 특별한 의미를 가집니다. Base64url은 +를 -, /를 _로 바꾸는 변형이므로 URL, 파일 이름, 쿠키 값에 안전하게 사용할 수 있습니다.

JWT(JSON 웹 토큰)는 헤더와 페이로드 부분에 Base64url 인코딩을 사용합니다. JOSE(JSON 객체 서명 및 암호화) 표준은 전적으로 Base64url을 기반으로 합니다.

Base64 사용처

Base64는 이메일 MIME 첨부 파일(이진 파일을 텍스트 기반 이메일용으로 인코딩), JWT 토큰(JSON 헤더와 페이로드 인코딩), HTML의 데이터 URI(CSS/HTML에 이미지를 직접 삽입), 그리고 X.509 인증서 PEM 형식에서 사용됩니다.

PEM(개인 정보 보호 강화 메일) 형식은 DER로 인코딩된 이진 인증서를 Base64로 변환하여 "-----BEGIN CERTIFICATE-----"와 "-----END CERTIFICATE-----" 헤더 사이에 감쌉니다.

Base64는 보안을 제공하지 않음

Base64는 암호화가 아닙니다. 키가 필요 없는 되돌릴 수 있는 인코딩입니다. Base64로 인코딩된 데이터를 보는 사람은 누구나 무료로 제공되는 도구나 어떤 프로그래밍 언어에서든 한 줄짜리 코드로 즉시 디코딩할 수 있습니다.

Base64로 인코딩된 비밀번호나 토큰이 "숨겨져 있다"고 생각하는 것은 흔한 실수입니다. 실제로는 그렇지 않습니다. 디코딩할 수 있다면 공격자도 디코딩할 수 있습니다. 보안에는 인코딩이 아니라 암호화가 필요합니다.

디코딩은 간단함

Base64 디코딩은 인코딩만큼 쉽습니다. 4문자로 이루어진 각 Base64 그룹을 다시 6비트 값으로 대응시킨 후 연결하고 바이트로 나눕니다. = 패딩은 마지막 그룹이 나타내는 바이트 수를 알려 줍니다.

Python에서 import base64; base64.b64decode("TWFu")는 b"Man"을 반환합니다. 이 과정은 결정적이고 손실이 없으며 키나 비밀이 필요하지 않습니다.

Base64 오버헤드와 효율성

Base64의 33% 크기 오버헤드(입력 3바이트당 출력 4바이트)에 MIME에서 요구하는 76문자마다의 줄 바꿈이 더해지므로, Base64는 대규모 이진 전송에 효율적이지 않습니다.

이진 프레이밍을 사용하는 HTTP/2와 이진 프레임을 사용하는 WebSockets 같은 최신 이진 프로토콜은 원시 바이트를 직접 처리할 수 있으므로, 고성능 환경에서 Base64가 필요하지 않습니다.

Base32와 Base58: 다른 인코딩 방식

Base32는 32자로 이루어진 알파벳(A-Z 및 2-7)을 사용합니다. Base64보다 출력이 길지만 대소문자를 구분하지 않으므로, 대소문자가 손실될 수 있는 상황에 적합합니다. TOTP 공유 비밀은 Base32로 인코딩되는 경우가 많습니다.

Bitcoin에서 지갑 주소에 사용하는 Base58은 0, O, I, l처럼 시각적으로 혼동하기 쉬운 문자를 제거합니다. 따라서 주소를 복사할 때 잘못 옮겨 적는 오류가 줄어듭니다. 대신 Base58은 2의 거듭제곱이 아니므로 인코딩이 약간 더 복잡합니다.

Base64 알파벳 퀴즈

Base64 인코딩에 대한 지식을 확인해 보세요.

핵심 정리: Base64 인코딩

Base64는 비트를 6비트 단위로 묶고 64자 알파벳에 대응시켜 이진 데이터를 텍스트로 변환합니다. 33%의 크기 오버헤드가 발생하며, 3바이트의 배수가 아닌 입력에는 = 패딩을 사용합니다.

Base64는 보안을 제공하지 않습니다. 기밀성을 위한 것이 아니라 전송 호환성을 위해 사용됩니다. Base64url(-/_)은 JWT에 사용되는 URL 안전 변형입니다. 디코딩에는 키가 필요하지 않으며 몇 밀리초밖에 걸리지 않습니다.

자주 묻는 질문

“Base64 인코딩: 작동 방식” 강의는 무료인가요?

네 — “Base64 인코딩: 작동 방식” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Base64 인코딩: 작동 방식”에서 뭘 배우나요?

이메일, JWT, 데이터 전송에 사용되는 인코딩 방식인 Base64의 원리를 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“Base64 인코딩: 작동 방식” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Base64 인코딩: 작동 방식
  2. ASCII, Unicode와 텍스트 표현
  3. 암호화 출력의 16진수
  4. 인코딩과 암호화, 해싱의 차이
← Cryptology Academy(으)로 돌아가기