본문 바로가기
STUDY/CS

Base64 인코딩

by 수쨔앙 2023. 1. 5.

인코딩(encoding)

  • 코드화, 암호화
  • 어떤 정보를 정해진 규칙(code)에 따라 변환하는 것(en-code-ing)
  • 파일에 저장된 정보의 형태나 형식을 데이터 표준화, 보안, 처리속도 향상, 저장공간 절약 등을 위해서 다른 형태로 변환하는 처리 혹은 그 처리방식을 말한다.
  • 이메일 등의 전송, 동영상이나 이미지 영역에서 많이 사용된다.

 

Base64

  • 64진법
    64 = 2^6, 2의 제곱수에 기반한 진법 중 화면에 표시되는 ASCII 문자들로 표시할 수 있는 가장 큰 진법이다
    (128은 화면에 표시되는 ASCII 문자들이 128개가 되지 않는다.)
  • 이진 데이터를 text로 변경하는 인코딩이다.
  • 컴퓨터 분야에서 쓰이는 base64는 8비트 이진 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식
  • 이진 데이터를 6bit 씩 자른 뒤 6bit에 해당하는 문자를 base64 색인표에서 찾아 치환한다
  • 8비트 데이터에서는 텍스트 문자가 아닌 다른 기호나 글씨들이 들어 갈 수 있기 때문에, 이런 것들을 모두 텍스트로 바꿔 주기 위한 방법

 

출처 : https://ko.wikipedia.org/wiki/%EB%B2%A0%EC%9D%B4%EC%8A%A464


결국 문자열을 64개의 문자로 바꾸는 것이다!

알파벳 대/소문자, 숫자, +, /, = 까지 해서 64문자이다.

'='은 padding 문자라고 하는데 이게 왜 필요하냐?

 

일반적으로 ASCII 문자나 컴퓨터 데이터는 8비트씩 묶여있는데

base64 인코딩을 하려면 6비트씩 묶어야 한다

그런데 모든 문자열이 남김없이 딱딱 6비트씩 나눠떨어지진 않는다

그렇기 때문에 padding을 주는데 빈공간이 있음을 알려주기 위해 '='를 사용하는 것이다

 

한번 base64 인코딩을 해보자!

 

아스키 코드는 아래에서 확인하자

더보기

ASCII 코드

 

 

1. Man을 변환해보자

 

ASCII 코드로 변환하고 8bit 이진수 값으로 나타낸다

Text content M a n
ASCII 77 97 110
Bit pattern 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0

 

8bit 으로 나타낸 값을 6bit로 묶는고 base64 코드로 바꿔주자.

Bit pattern 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0
  19 21 5 46
base64 T W F u

 

그런데 모든 문자열이 이렇게 남김없이 끊어지진 않는다

그런 경우를 변환해보자

 

2. Many를 변환해보자

M a n y
77 97 110 121
0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0 0 1 1 1 1 0 0 1

 

마찬가지로 6bit로 묶으면 뒤에 2자리가 남게 되는데 남는 비트 공간에 0을 채워 6bit를 만드는 것이다

 

0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0
T W F u e Q

 

Many-- 저 빈 공간이 있음을 알려주기 위해 

패딩문자 '='를 추가하여

TWFueQ== 가 되는 것이다.

 

초기 문자보다 데이터의 크기가 더 커진다는 단점이 있지만 웹에서 공통적으로 사용될 수 있다는 편리함이 있다.

 

 

출처 http://arabiannight.tistory.com/entry/IT%EC%9A%A9%EC%96%B4-Base64-%EB%9E%80

728x90

'STUDY > CS' 카테고리의 다른 글

동기 / 비동기  (0) 2023.01.05
프로세스/스레드  (0) 2023.01.05
자료구조(해시테이블)  (0) 2023.01.04
자료구조 (스택 / 큐, 리스트/배열)  (0) 2023.01.04
자료구조 개요  (0) 2023.01.04

댓글