간단하다.
원본자료를 6비트씩 끊어서 처리한 방식이다.
예를 들면
H 는 아스키 코드로 0x48
C 는 아스키 코드로 0x43
Y 는 아스키 코드로 0x59
아스키코드는 16진수인데 이걸 2진수로 바꾸면
8421 8421 두번 해서
01001000 01000011 01011001
이걸 쭉 이어서 붙인다.
010010000100001101011001
이걸 6비트씩 끊는다.
010010 000100 001101 011001
이런 원리로 한다고 생각하면 된다.
SENZCg==
이 사이트 가서 인코딩하면 이렇게 나옴
Base64 인코딩은 그럼 왜 할까?
6비트씩 묶어서 -> ASCII 문자로 다시 바꿔서(8bit)가 된다. 따라서 용량도 증가한다.
그런데도 왜 할까?
바로 이진수로 되어있는 Bitstream 데이터를 무조건 몽땅 (영)문자로 바꿀 수 있다는게 핵심이다.
왜 바꾸느냐?
요새는 기본적으로 웹기반인데, 문제는 웹기술은 HTML 문서라고 하는 것은 기본적으로 아스키 코드로 되어있다!
그런데, 아스키 코드로 표현할 수 없는 바이너리로 존재하는 데이터가 있다.
작은 이미지 같은것
이 이미지들을 HTML에 포함시키기 위해 Base64를 사용하는 것이다.
웹페이지에 사람이 접속하고자 할때,
HTML 문서(1K)+ 이미지(6K)
VS
HTML 문서(10K) 만 보낼때보다 효율이 더 좋다. 속도도 더 빠르고 용량도 더 효율적으로 활용할 수 있다.
HTML, JSON도 모두 문자열로 데이터를 다루는데
여기에 어쩔 수없이 바이너리 데이터를 삽입해야할때 Base64인코딩을 하면 굉장히 유리하기 때문에 사용한다.
즉 효율적이라 사용하는 것이다.
++ 추가
6비트씩 자료를 자르면, 애매하게 자투리가 남는 경우가 있다.
강제로 6비트로 늘리고, 빈 값을 Padding을 집어넣는다.
그 Padding이== 이다.
SENZCg== 이런 것처럼
디코딩할때는 Padding은 갖다버린다.
직접 코딩할 일은 없다. 라이브러리도 있고 내장되어있다.
'보안' 카테고리의 다른 글
암호화 vs 인코딩 (0) | 2024.06.17 |
---|---|
디스크 스케줄링 알고리즘 (0) | 2024.06.17 |