Base64 인코딩,디코딩 이란?

Base64란?

  • 이진 데이터를 64개의 인쇄 가능한 ASCII 문자로 나타내는 이진-텍스트 인코딩 방식입니다.
  • 목적:
    • 텍스트 기반 통신을 위해 설계된 매체를 통해 이진 데이터를 안전하게 전송합니다. (이메일, URL, XML 등)
    • 이진 데이터를 압축된 텍스트 형식으로 저장합니다.

작동 방식:

  1. 인코딩:
    • 이진 데이터는 24비트 그룹(3바이트)으로 나뉩니다.
    • 각 그룹은 네 개의 6비트 블록으로 분할됩니다.
    • 각 6비트 블록은 64문자 알파벳(문자, 숫자, ‘+’, ‘/’, 패딩용 ‘=’)의 해당 문자로 매핑됩니다.
  2. 디코딩:
    • Base64 문자는 6비트 블록으로 다시 매핑됩니다.
    • 블록이 결합되어 24비트 그룹을 형성합니다.
    • 그룹이 이진 데이터로 다시 변환됩니다.

일반적인 사용:

  • 이메일 첨부 파일
  • 웹 페이지의 이미지 (데이터 URI)
  • API 인증 (예: 기본 인증)
  • JSON에서 이진 데이터 인코딩
  • XML과 같은 텍스트 기반 형식에 이진 데이터 저장

온라인 도구:

프로그래밍 언어에서 인코딩/디코딩:

  • 대부분의 언어에는 내장된 Base64 라이브러리 또는 함수가 있습니다.
    • Python: base64 모듈
    • Java: java.util.Base64 클래스
    • JavaScript: btoa() 및 atob() 함수
    • C#: Convert.ToBase64String() 및 Convert.FromBase64String() 메서드

핵심 사항:

  • Base64는 암호화가 아니라 인코딩입니다. 데이터 기밀성을 보호하지 않습니다.
  • 데이터 크기를 약 33% 증가시킵니다.
  • 텍스트 기반 환경에서 이진 데이터를 안전하고 효율적으로 전송하는 데 필수적입니다.

예제:

다음은 Base64로 인코딩된 문자열의 예입니다.

"Hello, world!"

이 문자열을 Base64로 인코딩하면 다음과 같은 결과가 나타납니다.

"SGVsbG8gV29ybGQ="

이 문자열을 Base64로 디코딩하면 원래 문자열로 복원됩니다.

"Hello, world!"

사용 방법:

Base64를 사용하여 이진 데이터를 인코딩하거나 디코딩하려면 다음을 수행하십시오.

  1. 인코딩하려는 데이터를 준비합니다.
  2. Base64 라이브러리 또는 함수를 가져옵니다.
  3. 인코딩 또는 디코딩을 수행합니다.

예를 들어, 다음 코드는 Python에서 Base64로 문자열을 인코딩합니다.

Python

import base64

data = "Hello, world!"

encoded = base64.b64encode(data.encode("utf-8"))

print(encoded)

이 코드는 다음 출력을 생성합니다.

SGVsbG8gV29ybGQ=

다음 코드는 Python에서 Base64로 인코딩된 문자열을 디코딩합니다.

Python

import base64

encoded = "SGVsbG8gV29ybGQ="

decoded = base64.b64decode(encoded)

print(decoded.decode("utf-8"))

이 코드는 다음 출력을 생성합니다.

Hello, world!