Base64란 무엇인가
Base64는 이진 데이터를 64개의 ASCII 문자로 변환하는 인코딩 방식이다. 이 방식은 8비트 이진 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 문자로 바꾸어, HTTP나 이메일 등의 텍스트 기반 시스템에서 안전하게 전송할 수 있게 한다. 주로 이메일 첨부나 HTML에 이미지를 포함할 때 사용되며, 데이터 크기가 약 33% 증가하지만 플랫폼 간 호환성을 보장한다.
Base64는 바이너리 데이터의 손실을 막기 위해 개발되었다. ASCII는 7비트 인코딩인데, 시스템마다 나머지 1비트를 다르게 처리하거나 제어 문자 코드가 달라 문제가 발생할 수 있다. Base64는 안전한 64개 문자(A-Z, a-z, 0-9, +, /)만 사용해 이러한 문제를 해결한다. 예를 들어, API 응답에서 이진 데이터를 전송하거나 인증 키를 HTTP 헤더로 보낼 때 유용하다.
Base64 인코딩 과정
인코딩은 3바이트(24비트) 이진 데이터를 4개의 6비트 그룹으로 나누어 처리한다. 각 그룹을 10진수로 변환한 후, Base64 테이블에 매핑된 문자로 바꾼다. 만약 데이터가 3바이트 단위가 아니면 =으로 패딩한다.
- 원본 데이터를 8비트(1바이트) 단위의 이진수로 변환한다.
- 이를 6비트 단위로 재그룹화한다. (2^6 = 64, 그래서 64개의 문자 사용)
- 각 6비트 값을 64개 문자 중 하나로 매핑한다.
- 데이터 길이가 맞지 않으면 '='로 패딩(채움)한다.
"Hello" 문자열의 예시:
- 이진 변환: 01001000 01100101 01101100 01101100 01101111
- 6비트 그룹: 010010 000110 010101 101100 011011 000110 111100 (패딩 추가)
- 결과: SGVsbG8=
사용 사례
- 인증: API 키를 Base64로 인코딩해 HTTP 헤더로 전송
- 이미지/파일: 웹에서 이미지를 문자열로 저장하거나 전송
- 프로그래밍: Java, JavaScript, Python 등 언어에서 내장 함수로 쉽게 구현 (예: JavaScript의 btoa(), atob())
아래는 Base64 변환 테이블이다.
값 | 범위문자 |
0-25 | A-Z |
26-51 | a-z |
52-61 | 0-9 |
62 | + |
63 | / |
주의점과 한계
Base64는 암호화가 아니라 단순 변환일 뿐이므로 보안 목적으로는 부적합하다. 데이터 크기 증가로 효율이 떨어질 수 있으니, 대용량 파일에는 압축 후 적용하는 게 좋다.
반응형
'Linux' 카테고리의 다른 글
리눅스 커널 모듈 (0) | 2025.05.15 |
---|---|
시스템 로그 분석 및 모니터링(logrotate) (0) | 2025.05.15 |
리눅스 (5) | 2025.04.28 |
Shell (0) | 2025.04.23 |