Base64 인코딩이란?
Contents
Base64 인코딩이란?
https://en.wikipedia.org/wiki/Base64
바이너리 데이터를 텍스트 데이터로 인코딩하는 방법 중 하나.
왜 필요할까?
https://stackoverflow.com/questions/201479/what-is-base-64-encoding-used-for
네트워크 등을 통해서 바이너리 데이터를 송신하고 수신할 때, 비트 단위로 스트리밍 하지 않는다.. 왜? 왜냐면 어떤 프로토콜은 내가 보내는 바이너리 데이터를 control character로 해석할 수도 있고, 어떤 프로토콜은 특수 문자의 조합을 보내고 있다고 생각할 수도 있다.
그래서 사람들이 생각해 낸 것이, 바이너리 데이터를 캐릭터로 인코딩하는 것. 캐릭터로 인코딩하게 된다면
6비트씩 끊어서 decoding한다. 그런데 전송 대상 데이터 길이가 6의 배수로 끝나지 않는 경우가 있을 수 있기 때문에, 6의 배수가 되도록 패딩 비트 0을 넣는다. 패딩 비트 00은 ‘=‘으로 인코딩된다. 따라서 어떤 경우에도 ‘===‘이 나타나는 경우는 없다.. 왜냐하면 000000은 표시할 필요가 없으니까
보통 decode할 때 base64 문자 4개 = 24bit = 8bit 문자 3개 (255 크기 char 3개)로 해석 가능
하필 64인 이유
어떤 경우에도 64개의 문자가 나타난다는 것을 보장한다 64인 이유는
- 6비트의 이진 데이터를 표현하기 쉽기 때문.
- 64개의 문자 안에는 A-Z, a-z, 0-9, +, /, =가 포함되어 있는데 이들은 전부 url safe하기 때문