Jun 26 2007
Base64 인코딩
Base64란 모든 8비트 문자를 64개 문자로 표시하기 위한 인코딩/디코딩 방법으로,
64개 문자는 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ 이다.
(패딩을 위해 = 를 추가로 사용한다.)
위의 문자들로 표현하는 이유는 저 문자들이 어떤 문자 셋에도 포함되어 있기 때문이다.
문자 셋에 제한되지 않고 특수문자가 +와 /, =만 쓰이기 때문에 다양한 활용이 가능하다.
URL 쿼리 스트링에도, SQL 쿼리문에 포함되는 데이터로도 사용 가능하며, 용량이 길어지는 단점을 제한다면 간단한 암호화에도 활용할 수 있다.(처음에 찾아보게 된 이유도 이것 때문)
가장 많이 쓰이는 곳은 아마 MIME 타입의 메일 본문이 아닐까 싶다.
원칙은, 문자열을 비트로 전부 변환하여(이 때, 한 글자는 8비트) 6 비트 간격으로 끊어준다는 것이다.
이 때, 전체 문자열을 6 비트로 표현하기 위해 문자열 3 바이트를 4 바이트로 표현한다.
(8 비트와 6 비트의 최소공배수가 24비트, 3 * 8 = 4 * 6 = 24 bit)
예를 들어 “ABCD”를 Base64 인코딩하면,
1) 2진수 변환 : 01000001 01000010 01000011 01000100
2) 6비트씩 묶음 : 010000 010100 001001 000011 010001 000000 <= 마지막에 0이 모자르면 채움
3) 10진수로 바꿈 : 16, 20, 9, 3, 17, 0
4) 숫자를 위의 문자의 인덱스로 보고 해당하는 문자를 찾음(0부터 시작).
구하면 QUJDRA 가 됨
5) 문자열 3 바이트를 4 바이트로 표현하여야 하는데 결과가 6 바이트이므로,
8 바이트에 맞추기 위해 패딩 2 바이트를 = 로 붙임. 즉 최종 결과는 QUJDRA== 이 됨.
Base64에 대한 자세한 설명 및 예시는 아래를 참고하자.
