Base64 는 무엇일까?

Daniel·2024년 1월 30일
0

Back-End

목록 보기
32/42

들어가며

많은 예제에 나오는 인코딩 방식인 Base64에 대한 개념을 잡기위한 글입니다.

Base64 란?

Base64는 이진 데이터를 ASCII 문자로 변환하는 인코딩 방식 중 하나이다.
이진 데이터를 인코딩하여 전송하거나 저장할 때 사용한다.

Base64 인코딩의 작동방식

  1. 3바이트씩 이진 데이터를 묶습니다.
  2. 각각의 3바이트(24비트)씩 묶은 이진 데이터를 8비트씩 3개로 나눈다.
  3. 나눠진 3개의 8비트 값을 6비트로 4개씩 묶습니다.
  4. 묶은 6비트 값을 각각 Base64 문자 테이블에서 해당하는 문자로 변환합니다.

Base64 디코딩은 인코딩의 반대과정으로, Base64로 인코딩된 문자열을 이진 데이터로 디코딩하는 과정입니다. 디코딩된 이진 데이터는 원래의 이진 데이터와 같아야 한다.

만약 3바이트 미만이면?

인코딩된 문자열 끝에 하나 또는 두 개의 '=' 문자가 채워져 4자의 배수가 된다. (패딩 개념)
예를 들어 Base64에서 이진 데이터 "101"을 인코딩하려는 경우 인코딩된 데이터의 끝을 나타내는 '=' 문자와 함께 "MTA="로 인코딩됨

종류

  • MIME 인코딩
    텍스트 데이터를 위해 설계되었으며, 인코딩된 문자열의 마지막에는 줄바꿈 문자가 포함된다..
  • URL 및 파일 이름 안전한 인코딩
    인코딩된 문자열이 URL 또는 파일 이름으로 사용될 때 안전한 문자셋을 사용하여 인코딩한다..
  • 기본 인코딩
    MIME 인코딩과 유사하지만 줄바꿈 문자가 포함되지 않음.

Base64.getDecoder()는 기본 인코딩을 사용합니다.

사용 예

  • 이진 데이터로 이루어진 이미지파일 -> Base64인코딩
    이메일로 전송할때, 일부 이메일 클라이언트는 이진 데이터를 올바르게 처리하지 못 할수 있다.
    이런 경우에 Base64인코딩을 사용해 ASCII 문자로 변환해 첨부하여 보냄

  • 문자열 -> Base64
    - 인코딩
    각 문자를 이진 데이터로 변환 후 6비트씩 자름
    해당 비트값을 ASCII 문자로 표현

    	- 디코딩
    		ASCII 문자(10진법 사용)를 64진법으로 변환
    		이진 데이터를 6비트씩 자르고 문자로 변환

장단점

장점

  • 바이너리 데이터를 텍스트로 인코딩할 수 있습니다.
  • 텍스트와 바이너리 데이터를 안전하게 전송할 수 있습니다.
  • 다양한 프로토콜과 기술에서 지원됩니다.

단점

  • 인코딩된 데이터의 크기가 원본 데이터의 1.33배로 증가합니다.
  • 인코딩된 데이터를 디코딩할 때 오류가 발생할 수 있습니다.
profile
응애 나 애기 개발자

0개의 댓글