Base64 인코딩이란?

권태형·2023년 3월 8일
0

지식정리

목록 보기
22/72
post-thumbnail

면접준비를 하면서 CS지식을 공부하며 Base64인코딩에 대해서 알아보려 했다.

일단 말 그대로 풀면 Base(기본이되는), 64(64비트), 인코딩(Encoding) 64비트를 기본으로하는 인코딩이라는 것인데

이해할 수 없는 용어 하나 인코딩!! 그렇다면 인코딩이란 무엇일까?

인코딩이란?

인코딩은 컴퓨터에서 정보를 저장하고 전송하기 위해 사용되는 방법을 말한다.

정보를 저장하거나 전송할 때는 이진수(binary) 형태로 변환되어야 하며, 이진수로 변환하는 과정을 인코딩이라고 한다.

그럼 Base64 Encoding은 "64비트를 기본으로해서 컴퓨터에 정보를 저장하고 전송하기 위해 2진수로 변환할 때 사용되는 방법"이라는 뜻이 되겠다.

그럼 이제 base64 인코딩에 대해 더 자세히 알아보자

Base64 Encoding이란?

이진수(binary) 데이터를 Text로 바꾸는 인코딩의 하나로써 이진수 데이터를 ASCII(아스키코드) 영역의 문자로만 이루어진 문자열로 바꾸는 인코딩 방식이다.

Base64 인코딩 동작방식

기본적인 동작방식은 아래와 같다.

문자열 > ASCII(아스키코드) > binary전환 > 6비트씩 묶어서 8비트문자로 변환 > Base64색인표에서 찾아서 치환

Base64인코딩에 중요한 특징은 변환했을 때 깔끔하게 떠어지지 않는 6비트의 2진수에 padding을 하여 빈자리를 채워주고 패딩문자=을 넣어준다는 것이다.

위 동작을 우리가 눈으로 확인하기 위해서 두가지 색인표를 알아야한다.

1. ASCII(아스키코드) 색인표

2. Base64 색인표

자 이제 두가지 색인표를 알아 보았으니 실전이다. 예시를 들어보자!
우리가 흔히 코드를 처음 배울때 쓰는 "Hello, world!"를 base64인코딩을 통해 위의 동작방식 한 단계 한 단계 확인하면서 변환해보자

예제

"Hello, world!"를 base64인코딩 해보자

문자열

당연히 Hello, world! 를 받게 될 것 이다. 이를 공백과 특수문자를 포함하여 하나씩 보면 총 13개의 글자가 들어있는 것을 확인할 수 있다.

H,e,l,l,o,,, ,w,o,r,l,d,!

ASCII(아스키코드)

각 알파벳을 아스키코드에 맞는 숫자로 치환한다.

H(72),e(101),l(108),l(108),o(111),,(44), (32),w(119),o(111),r(114),l(108),d(100),!(65)

2진수(binary)로 전환

01001000 01100101 01101100 01101100 01101111 00101100 00100000 01110111
01101111 01110010 01101100 01100100 00100001

6비트씩 묶어서 8비트 문자로 변환

010010 000110 010101 101100 011011 000110 111100 101100 001000 000111 011101 101111 011100 100110 110001 100100 001000 010000(padding부분)

Base64색인표에서 찾아서 치환

010010(S) 000110(G) 010101(V) 101100(s) 011011(b) 000110(G) 111100(8) 101100(s) 001000(I) 000111(H) 011101(d) 101111(v) 011100(c) 100110(m) 110001(x) 100100(k) 001000(I) 010000"padding부분"(Q==)

결과적으로 Base64인코딩된 데이터는 SGVsbG8sIHdvcmxkIQ== 이 된다.


참고자료(출처)
Base64 Encoding 유튜브 동영상
How to Encode/Decode Data Using Base64 and Why
아스키 코드표(ASCII Table)
코딩하는 오징어 Blog

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글