Base64 Encoding

기타 2011. 2. 18. 12:06



1. Base64 Encoding 이란?

Base64는 바이너리 데이터를  64진수 표현으로 변환하여 아스키 문자열로 인코딩하는 방법이다.
Bae64 encoding은 텍스트 데이터를 전송하기 위해 설계된 매체상에서 바이너리 데이터를 전송하거나 
저장하기 위해 사용되는 방식이다. 전송중에 데이터가 변경되지 않고, 파괴되지 않았음을 보장해준다. 
MIME를 사용하는 이메일을 포함한 많은 애플리케이션에서 사용된다.



2. Base64 Encoding 절차
3바이트 단위로 인코딩을 수행하며, 3으로 나누어 떨어지지 않는 데이터는 =문자로 패딩바이트를 삽입한다. 
(즉 3으로 나누어 떨어지지 않으면, =문자 1개, 또는 2개가 패딩된다.)
3바이트 데이터는 가장 상위비트부터 64진수로 표현하기 위해 6 비트씩 구분하여, 4개의 아스키 문자로 변환한다.
이 때 사용하는 64개의 문자는  A~Z (26개) , a~z(26개), 0~9(10개), +. / (2개) 이다.  0은   A로 인코딩되며,
63은 /로 인코딩이 된다. Base64Encoding 된 데이터는 원래 데이터보다 약 37% 증가한다. 


다음은 name 이라는 데이터가 Base64 Encoding 된후, 결과를 나타낸다.  

먼저 nam 이 가장 상위비트부터 6개의 비트씩 추출이 되어진다. e는 6개의 비트가 추출되어 인코딩이 되면
2개의 비트가 남게되는데, 여기에 4개의 0비트를 패딩하여 인코딩이 된다. 3바이트의 데이터는 인코딩된 
4개의 문자로 출력되는데,  위에서는 ZQ에 2개의 = 문자가 패딩이 된다. 
 
Base64 인코딩된 결과를 디코딩 할 때는 반대의 과정을 거치면 된다. 
인코딩 결과에서,  4개의 문자로부터 6개의 비트씩 추출하여 3바이트로 조합을 하여 한 바이트를 온전한 데이터로
읽으면 된다. 나누어 떨어지지 않는 문자는 =문자가 2개이면, 1개의 바이트(8비트)만을 추출하고 =문자가 1개이면,  
2개의 바이트(8비트씩 2개)를 추출하여 읽어내면 디코딩을 수행할 수 가 있다.  


 

'기타' 카테고리의 다른 글

지갑  (0) 2011.05.26
2011년 자바 개발자 컨퍼런스 등록!!  (1) 2011.05.23
Base64 Encoding  (0) 2011.02.18
muju  (33) 2011.02.14
정규표현식(Regular Expression)  (0) 2010.12.10
MD5(Message-Digest algorithm 5)  (0) 2010.12.10