티스토리 뷰

암호학

Base64

ys.k 2022. 3. 4. 01:19

Base64

컴퓨터 분야에서 쓰이는 Base 64 란 8비트 이진 데이터(실행 파일, ZIP 파일)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다.

간단하게 예를 들어 설명하자.

 

apple을 base 64로 변환하는 과정

apple의 각 문자를 아스키코드로 치환한다.

a p p l e
97 112 112 108 101

8비트 2진수로 변환시킨다.

97 112 112 108 101
01100001 01110000 01110000 01101100 01100101

6비트씩 묶어준다.

011000, 010111, 000001, 110000, 011011, 000110, 0101

하지만 위 처럼 모두 6비트씩 묶이지 않는 경우도 발생한다.

그럴 땐 마지막 0101에 00을 추가로 붙여서 인코딩한다.

 

base64의 표는 000000으로 시작하며 해당값은 'A'이다.

또한 A-Z, a-z, 0-9, +,/ 순으로 정렬되어있으며 개수는 총 64개이다.

 

이제 변환시켜주자.

011000 010111 000001 110000 011011 000110 010100
Y X B w b G U

따라서 apple은 YXBwbGU 으로 치환이 된다.

 

그리고 문자의 수가 맞지 않아 추가시켰던 0의 개수의 절반만큼 =을 붙여주면 완성이다.

apple -> (base64) -> YXBwbGU=

여기서=는 패딩문자라고 한다.

base64가 원문보다 33%길어짐에도 사용하는 이유는 신뢰할 수 없는 통신에서도 binary데이터를 안전하게 전송하기 위함.

댓글