어떠한 정보/데이터의 형태나 형식을 다른 형태나 형식으로 변환해주는것을 의미한다.인코딩을 하는 이유는 무엇일까? 데이터의 표준화, 처리속도 향상, 저장 공간 절약, 보안 등이 있다.
Base64란 64진법이라는 뜻으로 2의 6제곱 64으로 ASCII(아스키)문자들로 표시 할수 있는 가장 큰 진법이다.
BINARY DATA TYPE (이진수 데이터)를 아스키(ASCII) 문자로만 이루어진 데이터를 Text로 변환 시키는 인코딩 방법이다.
Base 64 변환표
인코딩 과정은 Binary data를 6bit 씩 자른 뒤 6bit에 해당하는 문자를 위의 Base64변환표에서 찾아서 치환해준다.
문자열 | many |
---|---|
ASCII | 77/ 97/ 110/111 |
binary | 01001101/ 01100001 /01101110/00000000 |
6비트로 묶음 | 010011 /010110/ 000101 /101110/000000/001010 |
몇번째 | 19 21 5 46 12 |
base64 | T W F u h |
문자열 → ASCII binary → 6bit cut → base64_encode
문자열에 따라 다르지만 6bit cut이 되지않고 남은 공간이 있으면 빈공간이 있다는 패팅 문자가 들어간다.
이렇게 아키스를 base 64로 인코딩을 하게 되면 원본보다 약 33%~37% 더 커진다.
인코딩을 하는 행동은 CPU연산 까지 필요한데 왜 사용하는가?
ASCII는 시스템간 데이터를 전달하기에 안전하지 않다.
- ASCII 는 7bit Encoding인데 binary는 8bit여서 나머지 1bit를 처리하는 방식이 시스템 별로 다르다.
Base64는 HTML 또는 Email과 같은 문자를 위한 media에 binary data를 포함해야 될 필요가 있을 때, 포함된 binary data가 시스템 독립적으로 동일하게 전송 또는 저장되는걸 보장하기 위해 사용한다