본문 바로가기

Etc/Converter

Base64.

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진수로 나타낸다.

Ascii에 대한 이미지 검색결과

 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 >

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