베이스가 64라는 것은 모든 정보를 64진수로 표시하는데, 보통 컴퓨터는 2진수를 사용하므로 64진수로 표시하기 위해서 2^6 = 64인, 즉 6비트 2진수 열이 필요합니다.

그런데 컴퓨터에서 가장 기본이 되는 정보 단위는 8 비트씩 엮어진 바이트이므로
6비트와 8비트가 각각 나누어 떨어질 수 있는 공배수의 최소값 (최소 공배수)를 구하면 24비트가 됩니다.

24비트는 8비트 바이트에서는 3바이트가 되고, 64진수로 나타내기 위한 6비트 단위로는 4 단위가 됩니다.

따라서 Base64의 인코딩 원리는 3바이트 단위마다 (즉 24비트 마다) 6비트씩 쪼개어서 6비트 짜리 문자 4개로 만드는 것이 되겠습니다.

이 때 6비트씩 쪼개진 단위를 A-Z a-z 0-9 + / (모두 64개 문자)로 각각 대응시키면 Base64 인코딩이 됩니다.

Base64 Encoding/Decoding

그런데 입력되는 정보가 모두 3바이트씩 떨어진다는 보장이 없으므로 3바이트로 나누어 떨어지지 않는 경우 = 문자로 빈 공간을 채우게 합니다.

즉 Base64로 인코딩 된 데이타에서 = 가 보이면 그것은 다시 디코딩 할 때, 빈공간을 채우는 역할일 뿐, 아무 것도 아니라는 것입니다. (Base64로 인코딩 정보의 끝에 최대 나올 수 있는 = 의 수는 0~2개임)

디코딩은 A-Z a-z 0-9 + / 문자를 각각 6비트의 정보로 바꾸어서 4 단위 (6*4=24 비트) 마다 합쳐서 3바이트 (3*8=24 비트) 로 다시 복원시키면 됩니다.

원문 출처: http://par.sarang.net/369

0 댓글