Base64 인코딩이란?
8비트(bit)씩 구성된 이진 데이터(Binary Data)를 6비트(bit)씩 잘라서 Base64에 해당하는 64개의 문자로 매핑하는 것이다.다시 말하자면, 8비트로 구성된 글자(아스키 문자)의 연속을 6비트씩 잘라서 새로운 글자(Base64)로 바꾼다.
여기 문자열 "apple"이 있다. 이를 Base64로 변환해보자.
문자 | a | p | p | l | e |
십진수 | 97 | 112 | 112 | 108 | 101 |
이진수 | 01100001 | 01110000 | 01110000 | 01101100 | 01100101 |
Base64로 직접 변환해보자
해당 이진수를 6개씩 나눠서 Base64 코드표에 해당하는 문자로 매핑해 보자.
0110000101110000011100000110110001100101
이걸 6비트씩 나눠보자
(8비트씩 붙어있던걸 6개씩 나누다보니 2비트가 남는다. 남는 2비트는 =로 써준다.)
0110000101110000011100000110110001100101
011000 = 24 = Y
010111 = 23 = X
000001 = 1 = B
110000 = 48 = w
011011 = 27 = b
000110 = 6 = G
010100 = 20 = U
남는 2비트는 =로 표시한다.
YXBwbGU=
apple에서 YXBwbGU= 로 변환이 완료되었다.
Base64를 사용하는 이유
Base64를 사용하는 가장 큰 이유는 Binary 데이터를 텍스트 기반 규격으로 다룰 수 있기 때문이다.
( ASCII 128을 Base64로 변환했기 때문에 규격이 달라졌다.)
기존 ASCII는 시스템간 데이터를 전달하기에 안전하지 않다. 모든 Binary 데이터가 ASCII에 포함되지 않으므로 제대로 읽지 못한다. 반면 Base64는 ASCII 중 제어문자와 일부 특수문자를 제외한 53개의 안전한 출력 문자만 이용하므로 데이터 전달에 더 적합하다.
참조 사이트
'프로그래밍' 카테고리의 다른 글
스핀락(Spin Lock)에 대해서 알아보자 (0) | 2024.08.13 |
---|---|
스레드 생성 이후에 언제 Handle을 반환해야 할까? (0) | 2024.08.07 |
단일 장애 지점(SPOF)에 대해서 (1) | 2024.04.29 |
깃허브 코파일럿(GitHub Copliot) 무료로 사용해보기 (0) | 2024.04.25 |
의존 관계 vs 연관 관계 (0) | 2024.04.22 |
댓글