본문 바로가기
Security/Web

base64란?

by 비니화이팅 2018. 9. 5.

What is base64?

base64는 말 그대로 64진법이라는 뜻을 가지고 있습니다. 

8bit Binary Data(Ex.실행파일, zip파일 등)를 64개의 ASCII문자로 변환하는 Encoding방식입니다. 

여기서 64개의 ASCII문자는 대문자 알파벳(A-Z)26개, 소문자 알파벳(a-z)26개, 숫자(0-9)10개, 두 가지의 기호. 즉, 총 64개를 말합니다.

메일에서 첨부파일(Ex.이미지, 오디오 파일)를 전송하기 위해 사용 하는 등 여러 방면에서 활용되고 있습니다. 플랫폼에서 binary data를 전송하기 위해 사용한답니다!



Let's do this!

'base'라는 문자열을 base64로 인코딩해봅시다!


① 우선 문자열을 ASCII로 변환해줍니다.

 문자열

b

 a

 s

 e

 ASCII

 98 

 97 

115 

101 


② 변환된 ASCII를 6bit씩 묶기 위해 binary로 변환해줍니다.

 ASCII

 98 

 97 

115 

101 

 binary

 01100010

01100001

 01110011

 01100101


 변환된 binary를 6bit씩(64개의 문자를 사용하기 때문(=2^64)) 끊어줍니다.

여기서 주의할점은 남는 비트 뒤에 0을 채워 6bit를 만들어 주어야 한다는 점!!

 binary 

 0

index

 011000

100110 

000101 

110011 

011001 

010000 


④ 6bit씩 끊어주었으면 이를 10진수로 변환합니다.

 index

 011000

100110 

000101 

110011 

011001 

010000

 dec

 24

 38

 5

 51

 25

 16


⑤ 이 10진수를 base64 table을 참조하여 변환해줍니다.

결과로 YmFzZQ가 나왔습니다

 dec

 24

 38

 5

 51

 25

 16

 base64

 Y

 Q


⑥ base64는 24bit 단위(3개 문자)로 인코딩이 이루어집니다. base를 24bit단위로 인코딩하려면 남은 bit수를 =로 맞춰줘야 합니다. 따라서 결과는 YmFzZQ==입니다~!

 

 24bit

 24bit

 binary 

 0

 0

0 

0 

0 

0 

0 

0 

 0

0 

0 

0 

0 

0 

0 

 base64

 Y

= 

= 


끄읕^~^!

'Security > Web' 카테고리의 다른 글

CVE-2006-5178  (0) 2018.09.09
php 파일업로드 에러코드 6  (0) 2018.09.07
base64란?  (0) 2018.09.05
URL Jumping  (0) 2018.07.29
검증되지 않은 리다이렉트  (0) 2018.07.29
pangolin 사용법  (1) 2018.07.29

댓글0