Encoding์ด๋?
- ์ ๋ณด์ ํํ๋ ํ์์
ํ์คํ
, ๋ณด์
, ์ฒ๋ฆฌ ์๋ ํฅ์
, ์ ์ฅ ๊ณต๊ฐ ์ ์ฝ
๋ฑ์ ์ํด์ ๋ค๋ฅธ ํํ๋ ํ์์ผ๋ก ๋ณํํ๋ ๋ฐฉ์์ ๋งํ๋ค.
Base64 Encoding์ด๋?
- Binary Data๋ฅผ Text ํํ๋ก ๋ณํํ๋ ๋ฐฉ์์ ๋งํ๋ค.
- Character set์ ์ํฅ์ ๋ฐ์ง ์๋ ๊ณตํต
ASCII ์์ญ
์ ๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด๋ก ๋ฐ๊พธ๋ Encoding์ด๋ค.
์ Base64๋ฅผ ์ฌ์ฉํ๋๊ฐ?
- ASCII๋ 7 bits Encoding์ธ๋ฐ ๋๋จธ์ง 1bit๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด ์์คํ
๋ณ๋ก ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
- ์ผ๋ถ ์ ์ด๋ฌธ์(Line ending)์ ๊ฒฝ์ฐ ์์คํ
๋ณ๋ก ๋ค๋ฅธ ์ฝ๋๊ฐ์ ๊ฐ๋๋ค.
- ASCII๋ ์์คํ
๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ์ ์์ ํ์ง๊ฐ ์๋ค.
- Base64๋ ASCII ์ค ์ ์ด๋ฌธ์์ ์ผ๋ถ ํน์๋ฌธ์๋ฅผ ์ ์ธํ 64๊ฐ์ ์์ ํ ์ถ๋ ฅ ๋ฌธ์๋ง ์ฌ์ฉํ๋ค.
์์ ํ ์ถ๋ ฅ ๋ฌธ์
๋ ๋ฌธ์ ์ฝ๋์ ์ํฅ์ ๋ฐ์ง ์๋ ๊ณตํต ASCII
๋ฅผ ์๋ฏธํ๋ค.
How to Work?
- ๊ธธ์ด 3์ธ โaceโ๋ฅผ encode ํด๋ณด์.
ace
๋ฅผ 10์ง์๋ก ๋ณํํ๋ค.
- 10์ง์๋ฅผ 2์ง์๋ก ๋ณํํ๋ค.
- 97= 01100001, 99= 01100011, 101= 01100101
- Combined : 01100001 01100011 01100101
- 6bit ๋จ์๋ก ๋ค์ ์ฌ์ ๋ ฌํ๋ค.
- 011000 010110 001101 100101
- 2์ง์๋ฅผ ๋ค์ 10์ง์๋ก ๋ค์ ๋ณํํ๋ค.
- 011000= 24, 010110= 22, 001101= 13, 100101= 37
- 10์ง์๋ฅผ ๋ค์ ๋ฌธ์์ด๋ก ๋ณํํ๋ค.
- 24= Y, 22= W, 13= N, 37= l
6bit๋ก ์๋๋ ์ง๋ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊น?
abcd
๋ก ์๋ฅผ ๋ค์ด๋ณด์.
- a= 97, b= 98, c= 99, d= 100
- 97= 01100001, 98= 01100010, 99= 01100011, 100= 01100100
- 011000, 010110, 001001, 100011, 011001, 00
- ๋นํธ 4๊ฐ๊ฐ ๋ถ์กฑํ ์ํฉ์ด๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ padding์ ์งํํ์ฌ 0000์ ์ถ๊ฐํ๋ค.
- paddingํ๋ค๋ ์๋ฏธ๋ก ==๋ฅผ ์ถ๊ฐํ๋ค.
- 011000, 010110, 001001, 100011, 011001, 000000 ==
- 011000= 24, 010110= 22, 001001= 9, 100011= 35, 011001= 25, 000000=0 ==
- 24= Y, 22= W, 9= J, 35= j, 25= Z, 0= A ==
- โabcdโ โ โYWJjZA==โ
๋จ์ ์ ์์๊น?
- Base64 Encoding์ ํ๊ฒ๋๋ฉด ์ ์กํด์ผ ๋ ๋ฐ์ดํฐ์ ์์ด ๋์ด๋๋ค.
- Base64 ๊ณผ์ ์์ Overhead ๋ฐ์ํ๋ค.
Reference