๐Ÿ”
โ† ๊ฐ€์ด๋“œ ๋ชฉ๋ก์œผ๋กœ

Base64๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

ยท ํƒœ๊ทธ: base64, encoding, binary-to-text, web-development, data-transfer

Base64 ์ธ์ฝ”๋”ฉ์ด๋ž€?

Base64๋Š” 64์ž ์•ŒํŒŒ๋ฒณ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ASCII ๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ์ด์ง„-ํ…์ŠคํŠธ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์›๋ž˜ MIME(Multipurpose Internet Mail Extensions)์„ ํ†ตํ•œ ์ด๋ฉ”์ผ ์ฒจ๋ถ€ ํŒŒ์ผ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ์›น์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€, ํŒŒ์ผ, ์••์ถ•๋œ ๋ฐ”์ดํŠธ์™€ ๊ฐ™์€ ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ํ…์ŠคํŠธ์šฉ์œผ๋กœ ๊ตฌ์ถ•๋œ ์ฑ„๋„์„ ํ†ตํ•ด ์ „์†กํ•ด์•ผ ํ•  ๋•Œ, Base64๊ฐ€ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์ž„์˜์˜ ๋ฐ”์ดํŠธ๋ฅผ ๊ฐ€์ ธ์™€ ๋ฌธ์ž, ์ˆซ์ž ๋ฐ ๋ช‡ ๊ฐœ์˜ ํŠน์ˆ˜ ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋œ ์•ˆ์ „ํ•˜๊ณ  ์ด์‹ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Base64์˜ ์ž‘๋™ ๋ฐฉ์‹

Base64๋Š” ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ 3๋ฐ”์ดํŠธ(24๋น„ํŠธ) ๊ทธ๋ฃน์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฐ ๊ทธ๋ฃน์„ 4๊ฐœ์˜ Base64 ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. "Base64"๋ผ๋Š” ์ด๋ฆ„์€ ์ธ์ฝ”๋”ฉ ์•ŒํŒŒ๋ฒณ์ด 64๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฌธ์ž(A-Z, a-z, 0-9, +, /)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์—์„œ ์œ ๋ž˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ธ์ฝ”๋”ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‹จ๊ณ„๋ณ„ ์„ค๋ช…

  1. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ 3๋ฐ”์ดํŠธ(24๋น„ํŠธ)๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค
  2. ์ด๋ฅผ 4๊ฐœ์˜ 6๋น„ํŠธ ๊ทธ๋ฃน์œผ๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค
  3. ๊ฐ 6๋น„ํŠธ ๊ฐ’(0-63)์„ Base64 ์•ŒํŒŒ๋ฒณ ํ…Œ์ด๋ธ”์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค
  4. ์ž…๋ ฅ ๊ธธ์ด๊ฐ€ 3์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š์œผ๋ฉด ํŒจ๋”ฉ(=)์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค

๋‹ค์Œ์€ ๊ตฌ์ฒด์ ์ธ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด "Man"์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธ์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค:

  • M (ASCII 77) = 01001101
  • a (ASCII 97) = 01100001
  • n (ASCII 110) = 01101110

๊ฒฐํ•ฉ: 01001101 01100001 01101110 โ†’ 6๋น„ํŠธ ๊ทธ๋ฃน์œผ๋กœ ๋ถ„ํ• :

  • 010011 = 19 โ†’ T
  • 010110 = 22 โ†’ W
  • 000101 = 5 โ†’ F
  • 101110 = 46 โ†’ u

๋”ฐ๋ผ์„œ "Man"์€ "TWFu"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

ํŒจ๋”ฉ์ด๋ž€?

์ž…๋ ฅ ๊ธธ์ด๊ฐ€ 3๋ฐ”์ดํŠธ์˜ ๋ฐฐ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ, Base64๋Š” ์ถœ๋ ฅ์ด 4์ž์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋˜๋„๋ก ํŒจ๋”ฉ ๋ฌธ์ž(=)๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

  • 1๋ฐ”์ดํŠธ ์ž…๋ ฅ โ†’ 2๊ฐœ์˜ Base64 ๋ฌธ์ž + 2๊ฐœ์˜ ํŒจ๋”ฉ ๋ฌธ์ž (==)
  • 2๋ฐ”์ดํŠธ ์ž…๋ ฅ โ†’ 3๊ฐœ์˜ Base64 ๋ฌธ์ž + 1๊ฐœ์˜ ํŒจ๋”ฉ ๋ฌธ์ž (=)

์˜ˆ๋ฅผ ๋“ค์–ด, "M"์— ํ•ด๋‹นํ•˜๋Š” ๋‹จ์ผ ๋ฐ”์ดํŠธ๋Š” TQ==๋กœ ์ธ์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค.

Base64 ์•ŒํŒŒ๋ฒณ ํ…Œ์ด๋ธ”

| ๊ฐ’ | ๋ฌธ์ž | ๊ฐ’ | ๋ฌธ์ž | ๊ฐ’ | ๋ฌธ์ž | ๊ฐ’ | ๋ฌธ์ž | |-------|------|-------|------|-------|------|-------|------| | 0 | A | 16 | Q | 32 | g | 48 | w | | 1 | B | 17 | R | 33 | h | 49 | x | | 2 | C | 18 | S | 34 | i | 50 | y | | 3 | D | 19 | T | 35 | j | 51 | z | | 4 | E | 20 | U | 36 | k | 52 | 0 | | 5 | F | 21 | V | 37 | l | 53 | 1 | | 6 | G | 22 | W | 38 | m | 54 | 2 | | 7 | H | 23 | X | 39 | n | 55 | 3 | | 8 | I | 24 | Y | 40 | o | 56 | 4 | | 9 | J | 25 | Z | 41 | p | 57 | 5 | | 10 | K | 26 | a | 42 | q | 58 | 6 | | 11 | L | 27 | b | 43 | r | 59 | 7 | | 12 | M | 28 | c | 44 | s | 60 | 8 | | 13 | N | 29 | d | 45 | t | 61 | 9 | | 14 | O | 30 | e | 46 | u | 62 | + | | 15 | P | 31 | f | 47 | v | 63 | / |

Base64 ์ธ์ฝ”๋”ฉ์˜ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€

์ด๋ฉ”์ผ ์ฒจ๋ถ€ ํŒŒ์ผ (MIME)

Base64๋Š” MIME(Multipurpose Internet Mail Extensions)์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. SMTP์™€ ๊ฐ™์€ ์ด๋ฉ”์ผ ํ”„๋กœํ† ์ฝœ์€ 7๋น„ํŠธ ASCII ํ…์ŠคํŠธ์šฉ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฏ€๋กœ, PDF, ์ด๋ฏธ์ง€, ZIP ํŒŒ์ผ๊ณผ ๊ฐ™์€ ์ด์ง„ ์ฒจ๋ถ€ ํŒŒ์ผ์€ ์ด๋ฉ”์ผ๋กœ ์ „์†ก๋˜๊ธฐ ์ „์— Base64๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

HTML ๋ฐ CSS์˜ ๋ฐ์ดํ„ฐ URL

Base64๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ URL์„ ํ†ตํ•ด ์ด๋ฏธ์ง€, ๊ธ€๊ผด ๋ฐ ๊ธฐํƒ€ ๋ฏธ๋””์–ด๋ฅผ HTML ๋˜๋Š” CSS ํŒŒ์ผ์— ์ง์ ‘ ์ž„๋ฒ ๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

<img src="data:image/png;base64,iVBORw0KGgo..." alt="Embedded Image" />

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ถ”๊ฐ€ HTTP ์š”์ฒญ์ด ํ•„์š” ์—†์–ด์ ธ ์ž‘์€ ์• ์…‹์— ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JSON Web Token (JWT)

JWT๋Š” URL ์•ˆ์ „ ๋ณ€ํ˜•์ธ Base64(Base64url)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ํ† ํฐ์˜ ํ—ค๋”, ํŽ˜์ด๋กœ๋“œ ๋ฐ ์„œ๋ช…์„ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ธ์ฆ ์‹œ์Šคํ…œ์—์„œ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9์™€ ๊ฐ™์€ ๋ฌธ์ž์—ด์„ ๋ณด๊ฒŒ ๋˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ด์ง„ ๋ฐ์ดํ„ฐ ์ €์žฅ

๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ…์ŠคํŠธ ์ €์žฅ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ์›์‹œ ๋ฐ”์ดํŠธ๋ฅผ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ Base64๋กœ ์ธ์ฝ”๋”ฉํ•˜๋ฉด ์ด๋ฏธ์ง€, ์ง๋ ฌํ™”๋œ ๊ฐ์ฒด ๋˜๋Š” ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ…์ŠคํŠธ ์—ด์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

API ํŽ˜์ด๋กœ๋“œ

REST ๋˜๋Š” GraphQL API๋ฅผ ํ†ตํ•ด ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ, ํŠนํžˆ JSON ํ˜•์‹์—์„œ๋Š” Base64๊ฐ€ ํ‘œ์ค€ ์„ ํƒ์ž…๋‹ˆ๋‹ค. JSON์€ ์›์‹œ ๋ฐ”์ดํŠธ๋ฅผ ๋„ค์ดํ‹ฐ๋ธŒํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Base64๋Š” ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋‚˜์š”?

๋„ค. Base64 ์ธ์ฝ”๋”ฉ์€ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ ์•ฝ 33% ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. 3๋ฐ”์ดํŠธ์˜ ์ž…๋ ฅ๋งˆ๋‹ค 4๋ฐ”์ดํŠธ์˜ ์ถœ๋ ฅ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ์ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ํ…์ŠคํŠธ ์ „์šฉ ์ฑ„๋„์„ ํ†ตํ•ด ์ „์†ก ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋Œ€๊ฐ€์ž…๋‹ˆ๋‹ค.

Base64๋Š” ์•”ํ˜ธํ™”์ธ๊ฐ€์š”?

์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Š” ํ”ํ•œ ์˜คํ•ด์ž…๋‹ˆ๋‹ค. Base64๋Š” ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์ด์ง€ ์•”ํ˜ธํ™”๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. Base64 ๋ฌธ์ž์—ด์„ ๋ฐ›์€ ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋“ ์ง€ ํ‚ค ์—†์ด๋„ ์›๋ž˜ ๋ฐ์ดํ„ฐ๋กœ ๋””์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋– ํ•œ ๋ณด์•ˆ์ด๋‚˜ ๊ธฐ๋ฐ€์„ฑ๋„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์•”ํ˜ธํ™”(์˜ˆ: AES)๋ฅผ ์‚ฌ์šฉํ•œ ํ›„, ์„ ํƒ์ ์œผ๋กœ ์•”ํ˜ธํ™”๋œ ๋ฐ”์ดํŠธ๋ฅผ Base64๋กœ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ์ „์†กํ•˜์„ธ์š”.

Base64 vs ๊ธฐํƒ€ ์ด์ง„-ํ…์ŠคํŠธ ์ธ์ฝ”๋”ฉ

| ์ธ์ฝ”๋”ฉ | ์•ŒํŒŒ๋ฒณ ํฌ๊ธฐ | ์˜ค๋ฒ„ํ—ค๋“œ | ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์šฉ๋„ | |----------|--------------|----------|----------| | Base64 | 64์ž | ~33% | ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐ ์ž„๋ฒ ๋”ฉ | | Base32 | 32์ž | ~60% | ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๊ณ  ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์ด ์—†๋Š” ์ปจํ…์ŠคํŠธ | | Base16 (Hex) | 16์ž | 100% | ๋””๋ฒ„๊น…, ๋ฉ”๋ชจ๋ฆฌ ๋คํ”„, ์ƒ‰์ƒ ์ฝ”๋“œ | | Ascii85 | 85์ž | ~25% | Adobe PostScript, PDF ์ŠคํŠธ๋ฆผ |

Base64๋Š” ๊ณต๊ฐ„ ํšจ์œจ์„ฑ๊ณผ ๊ด‘๋ฒ”์œ„ํ•œ ํ˜ธํ™˜์„ฑ ์‚ฌ์ด์˜ ๊ท ํ˜• ์žกํžŒ ์ ˆ์ถฉ์•ˆ์„ ์ œ๊ณตํ•˜์—ฌ, ์›น์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์ด์ง„-ํ…์ŠคํŠธ ์ธ์ฝ”๋”ฉ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์˜จ๋ผ์ธ์œผ๋กœ Base64 ์ธ์ฝ”๋”ฉ ์ฒดํ—˜ํ•˜๊ธฐ

์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉํ•  ์ค€๋น„๊ฐ€ ๋˜์…จ๋‚˜์š”? ๋ฌด๋ฃŒ ์˜จ๋ผ์ธ Base64 ์ธ์ฝ”๋” ๋ฐ ๋””์ฝ”๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ…์ŠคํŠธ๋‚˜ ํŒŒ์ผ์„ ์ฆ‰์‹œ ๋ณ€ํ™˜ํ•˜์„ธ์š”. ์„ค์น˜๋‚˜ ๊ฐ€์ž…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Base64๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์™„๋ฒฝ ๊ฐ€์ด๋“œ - CoolTool