1. Base64
Base64 인코딩 방식은 바이너리 데이터를 ASCII 문자열로 변환하는 인코딩 방법이다.
바이너리 데이터를 64개의 인쇄 가능한 ASCII 문자로 변환한다.
문자는 A-Z, a-z, 0-9, +,/ 로 구성되고, 인코딩 과정에서 패딩을 위해 ‘=’문자가 사용된다.
2. Base64 인코딩 과정
2.1 바이너리 데이터를 비트 단위로 나누기
인코딩할 바이너리 데이터를 8비트 단위의 바이트로 나눈다.
왜 8비트인가 하면 보통 데이터를 표현하고 처리할 때 8비트가 일종의 표준화가 되었고,
현대 컴퓨터 아키텍처와 잘 호환된다. 따라서 처리 속도를 최적화할 수 있다.
이 외에도 다양한 이유가 존재한다.
2.2 24비트 블록으로 그룹화
Base64의 모든 문자를 표현하기 위해서는 2^6 이 필요하다. 따라서 6bit씩 묶어야 한다. 하지만 8bit 단위로 바이너리 데이터를 나누기 때문에 6 과 8의 최소 공배수인 24bit 블록으로 그룹화 한다.
2.3 Base64 인덱스 테이블 사용
나눠진 6비트 단위를 Base64 인덱스 테이블에 따라서 해당하는 문자로 변환한다.
2.4 패딩 적용
원본 데이터가 3바이트의 배수로 떨어지지 않으면 ‘=’ 문자를 추가하여 인코딩된 문자열의 길이가 4의 배수가 되도록 한다.
다음 그림에서 Man 은 8비트씩 3개가 존재한다.
이후 해당 비트를 6씩 묶어서 base64 테이블과 매칭시킨다.
그렇다면 Ma만 있다면 어떻게 될까
16 % 6 을 하면 몫이 2가 나오고 나머지는 4가 나온다.
온전한 6비트를 만들어 주기 위해서 뒤에는 0으로 채워주고
24bits 중 18bits가 채워졌고 6bits를 채우기 위해서 패딩이라는 작업을 실시한다.
그렇다면 1글자일 때는 어떻게 할까
마찬가지로 온전한 6bits를 만들기 위해서 뒤에는 0으로 채우고
24bits 중 12bits가 모자라므로 뒤에는 패딩 작업을 해준다.
'knowledge > 기타 지식' 카테고리의 다른 글
인코딩과 디코딩 (0) | 2024.04.02 |
---|---|
논리 연산, 비트 연산 (0) | 2024.04.02 |
bit, byte, Byte ordering (0) | 2024.04.02 |
진법 (2) | 2024.04.02 |
컴퓨터 과학(Computer Science)이란? (0) | 2024.04.01 |