- Base64는 바이너리 데이터를 텍스트 형식으로 인코딩하는 방법 중 하나입니다.
- 바이너리 데이터(Byte 배열)를 텍스트 기반 시스템(예: 이메일, URL, JSON)에서 안전하게 전송할 수 있도록 도와줍니다.
- Base64 인코딩은 데이터를 6비트 블록으로 나누어 각각을 64개의 ASCII 문자로 변환하는 방식으로 작동합니다.
Base64 인코딩의 원리
- 바이너리 데이터를 6비트 블록으로 나누기
- 바이너리 데이터는 8비트(1바이트) 단위로 되어 있습니다.
- Base64 인코딩은 이 데이터를 6비트 단위로 나눕니다.
- 예를 들어, 3바이트(24비트) 데이터는 4개의 6비트 블록으로 나뉩니다.
- 각 6비트 블록을 Base64 문자로 변환
- 6비트 블록은 0부터 63까지의 값을 가질 수 있습니다.
- 이러한 값은 Base64 인코딩 테이블을 참조하여 64개의 ASCII 문자로 변환됩니다.
- Base64 문자 집합은 'A-Z', 'a-z', '0-9', '+', '/'로 구성됩니다.
- 패딩 처리
- 인코딩할 데이터의 길이가 6비트의 배수가 아닐 경우, '=' 문자를 사용하여 길이를 맞춥니다.
- 예를 들어, 인코딩할 데이터가 2바이트(16비트)일 경우, 2개의 '=' 패딩 문자가 추가됩니다.
Base64 인코딩 예시
예를 들어, 문자열 "Man"을 Base64로 인코딩하는 과정을 살펴보겠습니다.
- 바이너리 데이터로 변환
- "Man"의 ASCII 코드는 다음과 같습니다:
- M: 77
- a: 97
- n: 110
- 이를 바이너리로 변환하면
01001101 01100001 01101110
- 6비트 블록으로 나누기
- 위의 바이너리 데이터를 6비트 블록으로 나눕니다
010011 010110 000101 101110
- Base64 문자로 변환
- 6비트 블록을 Base64 문자로 변환하면
- 따라서 "Man"을 Base64로 인코딩한 결과는 "TWFu"가 됩니다.
010011 -> T
010110 -> W
000101 -> F
101110 -> u
Base64의 사용 사례
- 이메일 첨부 파일
- 바이너리 데이터를 이메일로 전송할 때 Base64 인코딩을 사용하여 텍스트 형식으로 변환합니다.
- 데이터 URI (이미지 전송)
- 웹 페이지에서 이미지를 포함할 때 Base64 인코딩을 사용하여 이미지 데이터를 텍스트 형식으로 변환합니다.
- JWT(Json Web Token)
- JSON 데이터를 안전하게 전송하기 위해 Base64 인코딩을 사용합니다.
주의 사항
- 용량 증가
- Base64 인코딩은 데이터 크기를 약 33% 증가시킵니다. 이는 인코딩 과정에서 데이터가 6비트에서 8비트로 확장되기 때문입니다.
동영상 파일은 base64로 보내지 않습니다.
multipart/form-data나 스트리밍 프로토콜을 활용합니다.
- 보안
- Base64는 데이터의 안전한 전송을 위한 인코딩 방식일 뿐, 데이터를 암호화하지 않습니다. 즉, 인코딩된 데이터를 복호화하는 것은 상대적으로 쉽습니다.
Share article