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์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
    • a= 97, c= 99, e= 101
  • 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