공부 및 일상기록

Base64 인코딩이란? 본문

개발/알고리즘, 자료구조

Base64 인코딩이란?

낚시하고싶어요 2023. 1. 9. 20:48

 

Base64 란 8비트의 이진데이터를 문자코드에 영향을 받지 않는 공통 ASCII영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식이다.

*base64인코딩은 아스키코드를 6bit씩 끊어서 읽는것이다.

6bit씩 끊어 읽은것을 ASCII문자 하나 (8bit)로 바꾸기 때문에 2bit가 증가됨 효율은 떨어지게 된다.
그러나 바이너리데이터를 모두 영문자(ASCII)로 변환하는것이 핵심이다.

바이너리 데이터를 바꾸는 이유는?

 


1. 웹은 html(문서) , 문서는 기본적으로 아스키코드로 되어있음
그러나 이미지같은것들은 아스키코드로 표현할수없는 바이너리로 되어있는데 그것을 강제로 문자로 바꿔서 문서에 포함시키려고 하는 것이다.

용량은 html + 이미지 인 경우 더 적을지 몰라도 효율적인 면을 보면 문서에 한번에 포함시켜 보내는것이 효율적일수 있다.

 

2. 또한 바이너리 데이터를 전송할 필요가 있을 때, ASCII로 인코딩하여 전송하게 되면 7bit이외의 나머지 1bit를 처리하는 방식이 시스템별로 다르기 때문에 일부 문자들이 시스템 별로 다른 코드값을 갖는다. 

이러한 문제로 ASCII는 시스템간 데이터를 전달하기에 안전하지 않다. 하지만 Base64는 ASCII의 제어문자와 일부 특수문자를 제외한 64개의 안전한 출력 문자만 사용하게 되는 것이다.

한가지 문제점

문자열을 6bit씩 자르고 완전히 나누어지지 않는 나머지는 어떻게 처리할까?


base64인코딩시 6비트씩 자르기때문에 마지막에 어중간한숫자가 남아버리면 6비트를 채우기 위해 padding값을 넣는다. 그 패딩값은 = 이다.