티스토리 뷰

CS

Base64

snvlqkq 2025. 2. 8. 21:27

Base64란?

Base64는 "이미지, 영상, 오디오 같은 데이터를 문자(텍스트)로 변환하는 기술"입니다.

일부 환경에서는 바이너리 데이터를 직접 처리할 수 없기 때문입니다.

바이너리 데이터를 직접 처리할 수 없는 환경(이메일, JSON, URL 등)에서 데이터를 안전하게 저장하고 전송하기 위해 사용

 

예제: 이메일 첨부파일 전송문제

  • 이메일 시스템은 문자(텍스트)만 처리할 수 있음 → 이미지 파일 직접 전송 불가
  • 따라서, 이미지를 문자(텍스트)로 변환해야 함

Base64 사용 예시

1. 문자(텍스트)만을 처리할 수 있는 환경

네트워크 및 텍스트만 처리 가능한 시스템(이메일, JSON 등)은 바이너리 데이터를 직접 처리할 수 없습니다.

Base64는 바이너리 데이터를 ASCII 문자(AZ, az, 0~9, +, /)로 변환하여 안전하게 전송 가능합니다.

 

JSON에서 바이너리 데이터 전송 문제

{
    "filename": "image.png",
    "fileData": "PNG... (바이너리 데이터, 직접 포함 불가능)"
}

 

Base64를 사용하면 JSON에서 바이너리 데이터를 안전하게 포함할 수 있습니다.

{
    "filename": "image.png",
    "fileData": "iVBORw0KGgoAAAANSUhEUgAA..."
}

2. 이메일 첨부파일 전송

이메일 시스템(SMTP)은 ASCII 문자만 허용하므로, 이미지/PDF 첨부파일을 Base64로 변환해야 합니다.

Base64를 사용하면 바이너리 데이터를 ASCII 문자로 변환하여 이메일에서 전송 가능합니다.

Content-Type: application/pdf; name="document.pdf"
Content-Transfer-Encoding: base64

JVBERi0xLjQKJeLjz9MKMSAwIG9iago...

 

3. HTML에서 이미지 직접 포함

웹사이트에서 이미지를 <img> 태그로 불러오려면 별도의 이미지 파일이 필요하지만, Base64를 사용하면 HTML에 직접 포함 가능합니다.

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

 

4. URL에서 바이너리 데이터를 안전하게 전송

URL은 ASCII 문자만 허용하므로, 바이너리 데이터를 직접 포함할 수 없습니다.
Base64를 사용하면 URL 내에서 바이너리 데이터를 안전하게 포함할 수 있습니다.

https://example.com/image?data=iVBORw0KGgoAAAANSUhEUgAA...

 

Base64 변환 예제

Base64는 바이너리 데이터를 6비트 단위로 나누고, 이를 ASCII 문자로 변환합니다.

1. Java

Java에서는 java.util.Base64 클래스를 사용하여 Base64 변환이 가능합니다.

 

Base64 인코딩

// 인코딩할 원본 문자열
String originalText = "Hello, Base64!";

// 문자열을 Base64로 인코딩
String encodedText = Base64.getEncoder().encodeToString(originalText.getBytes());
System.out.println("Base64 인코딩된 문자열: " + encodedText);

 

Base64 디코딩

// Base64 인코딩된 문자열
String encodedText = "SGVsbG8sIEJhc2U2NCE=";

// Base64 디코딩하여 원본 문자열로 변환
String decodedText = new String(Base64.getDecoder().decode(encodedText));
System.out.println("디코딩된 문자열: " + decodedText);

2. JavaScript

JavaScript에서는 btoa()와 atob() 함수를 사용하여 Base64 변환이 가능합니다.

 

Base64 인코딩

const text = "Hello, World!";
const encodedText = btoa(text);
console.log(encodedText);  
// 출력: "SGVsbG8sIFdvcmxkIQ=="

 

Base64 디코딩

const decodedText = atob("SGVsbG8sIFdvcmxkIQ==");
console.log(decodedText);
// 출력: "Hello, World!"

Base64의 단점

1. 데이터 크기 증가

  • 원본보다 약 33% 크기가 증가합니다.

2. 보안 기능 없음

  • Base64는 암호화가 아닙니다. 보안 용도로 사용하면 안 됩니다.
  • 누구나 쉽게 디코딩하여 원본 데이터를 복원할 수 있습니다.

'CS' 카테고리의 다른 글

인코딩이란?  (0) 2025.02.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함