1. 개요
Base64 는 8비트 이진 데이터(바이너리나 압축파일 등)를 문자코드에 영향을 받지 않는 공통 ASCII 문자들로만 이루어진 문자열로 바꾸는 인코딩 방식이다.
2. 원리
Base64 에서 64란 숫자는 진법을 뜻한다. 즉 Base64 는 64 진법으로 인코딩을 하는 방식인데 이는 ASCII 문자를 나타낼때 가장 적당한 숫자이다. 컴퓨터가 처리하는 2진, 2의 제곱수대로 나타낼때 2의6승은 64이고 2의7승은 128인데 128의 경우 128개를 채울 ASCII 문자가 없다.
알파벳 A-Z(26개) + a-z(26개) + 숫자0-9(10개) 해서 62개의 문자가 있고 나머지 2개를 어떤기호를 쓰는지에 대한 차이가 base64의 변종으로 나눠지며, 기본은 + / 문자가 쓰여진다.
입력된 문자열바이트가 하나(8bit) 라면 출력은 6bit(64진수) 출력되고 나머지 2bit 는 패딩 문자 "=" 로 체워진다. 이는 원본문자열로 decode 했을때 원본에는 없던 비트가 생기는 것을 방지 하기 위함이다.
3. Base64 문자표
| 값 | 문자 | 값 | 문자 | 값 | 문자 | 값 | 문자 |
|---|---|---|---|---|---|---|---|
| 0 | A | 16 | Q | 32 | g | 48 | w |
| 1 | B | 17 | R | 33 | h | 49 | x |
| 2 | C | 18 | S | 34 | i | 50 | y |
| 3 | D | 19 | T | 35 | j | 51 | z |
| 4 | E | 20 | U | 36 | k | 52 | 0 |
| 5 | F | 21 | V | 37 | l | 53 | 1 |
| 6 | G | 22 | W | 38 | m | 54 | 2 |
| 7 | H | 23 | X | 39 | n | 55 | 3 |
| 8 | I | 24 | Y | 40 | o | 56 | 4 |
| 9 | J | 25 | Z | 41 | p | 57 | 5 |
| 10 | K | 26 | a | 42 | q | 58 | 6 |
| 11 | L | 27 | b | 43 | r | 59 | 7 |
| 12 | M | 28 | c | 44 | s | 60 | 8 |
| 13 | N | 29 | d | 45 | t | 61 | 9 |
| 14 | O | 30 | e | 46 | u | 62 | + |
| 15 | P | 31 | f | 47 | v | 63 | / |
4. 예제
ABCD를 Base64 로 인코딩

Base64 인코딩은 24bit (ASCII 의 8bit 와 Base64 인코딩의 6bit, 8과 6의 최소공배수 24) 단위로 인코딩을 하기때문에 모자리는 비트는 0인, 패딩문자 '=' 로 치환한다.
※ 예제확인은 util.NEXTCUBE(http://util.nextcube.pe.kr) 에서 확인할 수 있다.
Base64 인코딩은 24bit (ASCII 의 8bit 와 Base64 인코딩의 6bit, 8과 6의 최소공배수 24) 단위로 인코딩을 하기때문에 모자리는 비트는 0인, 패딩문자 '=' 로 치환한다.
※ 예제확인은 util.NEXTCUBE(http://util.nextcube.pe.kr) 에서 확인할 수 있다.
'공부 > 0x09 STUDY' 카테고리의 다른 글
| Base64 Encode 원리 (2) | 2012/02/20 |
|---|---|
| 자바스크립트 encodeURI / encodeURIComponent / escape 비교 (0) | 2012/02/20 |
| 흠 (0) | 2012/02/15 |
| URL encode / URL decode (0) | 2012/02/15 |
| 메모리 구조 (0) | 2012/01/18 |