IT 그리고 정보보안/Knowledge base

Base64 Encoding

plummmm 2021. 4. 16. 04:36
반응형

이번에는 Base64 인코딩에 대해 한번 알아보겠음.

먼저 Base64를 공부하기전에, MIME이라는 개념을 알아야함.

 

MIME 이란, Multipurpose Internet Mail Extensions 의 약자로, 이메일을 위한 인터넷 표준 포맷이다.

이메일은 7비트 ASCII 코드를 사용하여 전송하기 때문에, 8비트 이상의 코드를 사용하는 문자나 파일들은

MIME 포맷으로 변환되어 전송된다. (이메일 전송 프로토콜인 SMTP가 7비트 ASCII 문자만 지원하기 때문임.)

 

이 때 MIME 포맷으로 변환할 때 쓰이는 인코딩이 Base64 인코딩이다.

하는 방법은.. 연속된 텍스트나 바이너리 파일이 있다. 이 녀석들을 1바이트(8비트) 단위로 3개 씩 끊는다.

그럼 총 24비트 일거 아니가. 이거를 6비트 4개로 다시 끊는다.

 

 

어떤 방식인지 대충 알겠죠. 진짜 뭐없다. 그러고 마지막에 자리가 남는다.. 그러면 = (페딩) 을 써서 끝을 알린다.

처음 인코딩 하고자 하는 문자를 아스키코드로 변환하여 그 바이너리값을 위 그림처럼 쪼갠다.

그리고 Base64 인코딩하고 마지막에 자리가 남으면 padding(=) 문자를 붙인다.

 

아래는 Base64 인코딩표다.

6bit로 끊은 다음 그 값을 아래 표를 보고 변환하면 된다.

 

 

변환 과정을 한가지만 예를 들어 보여주겠음.

 

KIM 이라는 단어를 Base64로 인코딩 해보겠다

 

KIM  -아스키코드 변환-> 75 73 77  =  01001011 01001001 01001101 

 

-6bit씩 끊음-> 010010 110100 100101 001101 = 18 52 37 13

 

-코드 변환-> S0lN 

 

근데 어차피 실제로 필요할 땐 인코더나 디코더 쓰면된다. 그냥 형태를 보고

아 이게 BASE64로 인코딩 되었구나 정도만 알면 될듯.

 

*뒤에 =, == 이 붙나 안붙나 보는게 관건

반응형

'IT 그리고 정보보안 > Knowledge base' 카테고리의 다른 글

HTTP 쿠키 (Cookie) & 세션 (Session)  (0) 2021.04.16
웹개발 언어에 대한 정리  (0) 2021.04.16
HTML Encoding  (0) 2021.04.16
URL Encoding  (0) 2021.04.15
ASCII Encoding  (0) 2021.04.15