Computer/PHP

base64 규칙

알찬돌삐 2012. 8. 10. 16:39

올블로그를 보다가 Base64 인코딩에 대한 글이 있어 읽어 보았다.
(http://blueiblog.com/ko/40)

윈도우즈 환경에서 쓰려고 그런 것 같은데 Base64 인코딩의 원리는 간단하므로
어떤 컴퓨팅 환경이던 원리만 알면 누구나 쉽게 코딩할 수 있으리라 생각된다.

Base64 인코딩 원리

우선 제목이 말하는 Base64의 의미가 무엇인지 살펴 보자.

베이스가 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 인코딩이 된다.

1166262965.jpg

Base64 Encoding/Decoding

 



그 런데 입력되는 정보가 모두 3바이트씩 떨어진다는 보장이 없으므로 3바이트로 나누어떨어지지 않는 경우 = 문자로 채우기를 한다. 즉 Base64로 인코딩 된 데이타에서 = 가 보이면 그 것은 다시 원래의 정보로 되돌아 갈때 (디코딩 될때) 아무 것도 없는 것이라는 소리가 된다.
(Base64로 인코딩 정보의 끝에 최대 나올 수 있는 = 의 수는 2개가 되겠다. 즉 끝부분에 =가 없거나 1개가 있거나 2개가 있는 것이 모두 나올 수 있는 경우가 되겠다.)

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

 

이 글은 스프링노트에서 작성되었습니다.

.

'Computer > PHP' 카테고리의 다른 글

인코딩 디코딩의 종류  (0) 2012.08.10
MIME 규격  (0) 2012.08.10
세마포어(semaphore)와 공유 메모리(shared memory) 함수  (0) 2012.08.10
PEAR #2 : 간단한 사용법  (0) 2012.08.10
PEAR #1 : 패키지 간편설치  (0) 2012.08.10