개요[편집 / 원본 편집]

base64는 바이너리 데이터를 ASCII 문자열로 인코딩하는 방식으로, 64개의 출력 문자(영문 대소문자 52개, 숫자 10개, 기호 2개)를 사용하여 데이터를 표현한다.[1] 주로 바이너리 데이터를 텍스트 기반 프로토콜(예: 이메일, HTTP 등)에서 안전하게 전송하기 위해 사용된다.

base64는 암호화나 보안 기법이 아니다. 이는 단순히 데이터를 다른 형식으로 표현하는 인코딩 방식에 불과하며, 비밀번호 저장이나 민감한 데이터 보호 용도로 사용될 경우 심각한 보안 취약점을 초래할 수 있습니다. 비밀번호 저장에는 반드시 bcrypt, Argon2 등의 안전한 해싱 알고리즘을 사용해야 합니다.[2]

역사[편집 / 원본 편집]

base64 인코딩은 1987년에 발표된 MIME(Multipurpose Internet Mail Extensions) 규격의 일부로 처음 표준화되었다.[3] 당시 이메일 시스템이 7비트 ASCII 문자만 지원하던 제약을 극복하기 위해, 바이너리 파일(예: 이미지, 실행 파일 등)을 텍스트로 변환하여 전송할 필요가 있었다.

작동 원리[편집 / 원본 편집]

base64는 다음과 같은 과정을 통해 데이터를 인코딩한다:

  1. 원본 데이터의 각 바이트(8비트)를 연속된 비트 스트림으로 취급한다.
  2. 이 비트 스트림을 6비트 단위로 분할한다(6비트는 0부터 63까지 64가지 값을 표현할 수 있음).
  3. 각 6비트 값을 미리 정의된 64개 문자 중 하나에 매핑한다.

인코딩 테이블[편집 / 원본 편집]

base64 인코딩 테이블
문자 문자 문자 문자
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

패딩[편집 / 원본 편집]

base64 인코딩 시, 입력 데이터의 길이가 3바이트의 배수가 아닐 경우 '=' 문자를 사용하여 인코딩된 문자열의 길이를 4의 배수로 맞춘다.[4]

활용 분야[편집 / 원본 편집]

base64는 다양한 분야에서 활용된다:

이메일 첨부 파일[편집 / 원본 편집]

MIME 규격에서 바이너리 첨부 파일을 인코딩하는 데 사용된다.[3]

웹 개발[편집 / 원본 편집]

데이터 URL 스키마를 이용해 이미지나 폰트 등을 HTML 내에 인라인으로 삽입할 때 사용된다. Data URLs(MDN Web Docs)

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...">

웹 API[편집 / 원본 편집]

JSON 등 텍스트 기반 데이터 포맷에서 바이너리 데이터를 안전하게 전송하기 위해 사용된다.[5]

인증 시스템[편집 / 원본 편집]

Basic Authentication에서 사용자 이름과 비밀번호를 인코딩할 때 사용된다.[6]

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Basic Authentication에서의 base64 인코딩은 단순 인코딩일 뿐이며, 암호화나 보안을 제공하지 않습니다. 따라서 HTTPS와 같은 보안 프로토콜 없이 사용하면 위험합니다.[7]

관련 항목[편집 / 원본 편집]

각주[편집 / 원본 편집]

외부 링크[편집 / 원본 편집]