Base64.
Base가 64라는 말그대로 64 = 26의 값으로 표현할 수 있게 변경해주는 코딩 방법이다.
만드는 방법은 변환될 대상 문자의 아스키코드 10진수 값을 2진수로 변경시켜 한 문자당 8bit로 표현된 문자를 쭉 연결한뒤 처음부터 다시 6bit씩 끊어서 'base64 table'의 값으로 치환하여 만든다.
base64 table은 (26=) 64개의 문자로 표현할 수 있도록 되어있는데 (65번째 값 64는 Padding문자 '=' 이고) 0~63 값들의 정렬은 다음과 같다.
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
Padding을 하는 방법은 (전체비트수 % 3)의 값의 수만큼 뒤에 =을 붙이는 것이다.
예시 :)
1. TEST를 Encoding 한다.
i) TEST를 ASCII의 10진수로 나타낸다.
T(84) E(69) S(83) T(84)
ii) 10진수를 2진수(8bit)로 변경한다.
T = 01010100 E = 01000101 S= 01010011 T = 01010100
> TEST = 01010100010001010101001101010100 가 된다
iii) 값을 다시 6bit로 자른다.
010101 000100 010101 010011 010101 00
ix) 끝자리에 모자란 bit를 0으로 채운다.
010101 000100 010101 010011 010101 000000
x) 다시 10진수로 전환한다.
21 4 21 19 21 0
xi) 이것을 base64 table의 값으로 치환한다.
< base64 table >
VEVTVA
xii) 전체비트수 % 3 의 값만큼 = 를 뒤에 붙인다.
010101 000100 010101 010011 010101 00
'00'이 나머지로 떨어지는 값이니 세보지않아도 전체비트수 % 3 = 2임을 알 수 있다.
VEVTVA==
결과 : VEVTVA==
2. VEVTVA== 를 디코딩한다.
i) base64 table로 값들을 10진수로 바꾼다.
V = 21 ,E = 4 ,V = 21 ,T = 19 ,V = 21 ,A = 0
ii) 10진수의 값들을 2진수로 전환한다.
010101 000100 010101 010011 010101 000000
iii) 6bit를 8bit로 나누어, 패딩된 부분을 제외한 부분을 10ㅂ진수로 전환해, 아스키로 문자로 전환한다.
01010100 01000101 01010011 01010100 0000
01010100 = T 01000101 = E 01010011 = S 01010100 = T
> TEST가 된다
예시 2 :)
'Etc > Converter' 카테고리의 다른 글
Base64. Decoder (0) | 2017.06.29 |
---|---|
Base64. Encoder (0) | 2017.02.23 |