๐ Base64๋ ๋ฌด์์ผ๊น? ์น๊ณผ ๋ฐ์ดํฐ๋ฅผ ์๋ ํจ์จ์ ์ธ ๋ค๋ฆฌ ๐
Base64๋ ์น ๊ฐ๋ฐ๊ณผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์์ ๋งค์ฐ ์์ฃผ ์ฌ์ฉ๋๋ ์ธ์ฝ๋ฉ ๊ธฐ๋ฒ ์ค ํ๋์ ๋๋ค. ํ ์คํธ๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ค๋ฅธ ์์คํ ์ผ๋ก ์ ๋ฌํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ๋ ๊ธฐ์ ์ธ๋ฐ์. ์ด๋ฒ ๊ธ์์๋ Base64์ ์ ์, ๋์ ์๋ฆฌ, ์ฅ๋จ์ , ๊ทธ๋ฆฌ๊ณ ํ์ฉ ์ฌ๋ก๊น์ง ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค. ํฅ๋ฏธ๋กญ๊ฒ ๋ฐ๋ผ์ค์ธ์! ๐ต๏ธโ๏ธ
1. Base64๋ ๋ฌด์์ธ๊ฐ์?
Base64๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํ ์คํธ ํ์์ผ๋ก ๋ณํํ๋ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ๋๋ค.
๐งฉ ์ ํ์ํ ๊น์?
์ปดํจํฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ด๋๋ฆฌ(0๊ณผ 1) ํํ๋ก ์ฒ๋ฆฌํ์ง๋ง, ํ ์คํธ ๊ธฐ๋ฐ ์์คํ (์: ์ด๋ฉ์ผ, JSON, HTML)์์๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ง์ ๋ค๋ฃฐ ์ ์์ต๋๋ค. Base64๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํ ์คํธ๋ก ๋ณํํด, ํ ์คํธ ๊ธฐ๋ฐ ์์คํ ์์๋ ์์ ํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋๋ก ๋์์ค๋๋ค.
2. Base64์ ์๋ ์๋ฆฌ
๐ ๏ธ ๊ธฐ๋ณธ ์์ด๋์ด
Base64๋ 8๋นํธ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ 6๋นํธ ๋จ์๋ก ์ชผ๊ฐ์ด ์ด๋ฅผ ํ ์คํธ๋ก ๋ณํํฉ๋๋ค.
๐ ์ธ์ฝ๋ฉ ๊ณผ์
1. ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
์๋ฅผ ๋ค์ด, “A”๋ผ๋ ๋ฌธ์๋ ๋ฐ์ด๋๋ฆฌ๋ก 01000001๋ก ํํ๋ฉ๋๋ค.
2. 6๋นํธ๋ก ๋ถ๋ฆฌ
01000001 → 010000 01 (6๋นํธ + ๋ถ์กฑํ ๋ถ๋ถ์ 0์ผ๋ก ํจ๋ฉ)
3. Base64 ๋ฌธ์ ๋งคํ
๊ฐ 6๋นํธ ์กฐ๊ฐ์ Base64 ์ธ์ฝ๋ฉ ํ ์ด๋ธ์ ๋งคํํฉ๋๋ค.
Base64 ํ ์ด๋ธ์๋ ์ด 64๊ฐ์ ๋ฌธ์๊ฐ ์์ผ๋ฉฐ, ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋ฉ๋๋ค:
A-Z: 0–25
a-z: 26–51
0-9: 52–61
+, /: 62, 63
4. ์ถ๋ ฅ
๋ณํ๋ ๊ฒฐ๊ณผ๋ฅผ Base64 ๋ฌธ์์ด๋ก ์ถ๋ ฅํฉ๋๋ค.
๐ ๋์ฝ๋ฉ ๊ณผ์
1. Base64 ๋ฌธ์์ด์ ๋ค์ 6๋นํธ ๋ฐ์ด๋๋ฆฌ๋ก ๋ณํํฉ๋๋ค.
2. ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ 8๋นํธ ๋ฌถ์์ผ๋ก ์ฌ์กฐํฉํฉ๋๋ค.
3. ์๋ ๋ฐ์ดํฐ๋ก ๋ณํํฉ๋๋ค.
3. Base64์ ํน์ง๊ณผ ์ ํ
๐ ์ฅ์
1. ํ ์คํธ ๊ธฐ๋ฐ ์์คํ ํธํ
์ด๋ฉ์ผ, URL, JSON ๋ฑ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ง์ํ์ง ์๋ ํ๊ฒฝ์์ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
2. ๊ฐ๋จํ ๊ตฌํ
๊ฑฐ์ ๋ชจ๋ ์ธ์ด์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ๋๋ค.
3. ๋ฐ์ดํฐ ์์ ๋ฐฉ์ง
๋ฐ์ด๋๋ฆฌ๋ฅผ ํ ์คํธ๋ก ๋ณํํ๋ฏ๋ก ๋ฐ์ดํฐ๊ฐ ์์๋ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ญ๋๋ค.
๐ ๋จ์
1. ๋ฐ์ดํฐ ํฌ๊ธฐ ์ฆ๊ฐ
Base64 ์ธ์ฝ๋ฉ์ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ์ฝ 33% ์ฆ๊ฐ์ํต๋๋ค.
• ์: 3๋ฐ์ดํธ → 4๋ฐ์ดํธ
2. ๋ณด์ ๋ฌธ์
Base64๋ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ๋ฐฉ์์ผ ๋ฟ ์ํธํ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ณด์์ ์ทจ์ฝํฉ๋๋ค.
3. ์ฑ๋ฅ ์ ํ
๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๊ฒฝ์ฐ ์ธ์ฝ๋ฉ ๋ฐ ๋์ฝ๋ฉ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
4. Base64์ ํ์ฉ ์ฌ๋ก
1๏ธโฃ ์ด๋ฏธ์ง ์ธ์ฝ๋ฉ
HTML์์ ์ด๋ฏธ์ง๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ํฌํจํ ๋ Base64๋ฅผ ์ฌ์ฉํฉ๋๋ค.
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...">
์ฅ์ : ์ธ๋ถ ์์ฒญ ์์ด ์ด๋ฏธ์ง๋ฅผ ๋ ๋๋ง.
๋จ์ : Base64 ๋ฌธ์์ด์ด ๋๋ฌด ๊ธธ์ด์ง ์ ์์.
2๏ธโฃ ๋ฐ์ดํฐ ์ง๋ ฌํ
Base64๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ JSON์ ํฌํจํ๊ฑฐ๋, ๋คํธ์ํฌ ์์ฒญ์ ๋ณธ๋ฌธ์ผ๋ก ์ ์กํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, ํ์ผ์ Base64๋ก ๋ณํํด API ์์ฒญ ๋ณธ๋ฌธ์ ๋ด์ ์ ์์ต๋๋ค.
{
"file": "VGhpcyBpcyBhIHRlc3QuCg=="
}
3๏ธโฃ ์ํธํ์ ํจ๊ป ์ฌ์ฉ
Base64๋ ์ํธํ ํ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ธ์ฝ๋ฉํ ๋๋ ์ฌ์ฉ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, AES ์ํธํ ๊ฒฐ๊ณผ๋ ๋ฐ์ด๋๋ฆฌ๋ก ๋์ค๋๋ฐ, ์ด๋ฅผ Base64๋ก ๋ณํํด ํ ์คํธ๋ก ์ ์ฅํฉ๋๋ค.
5. Base64 ์ฌ์ฉ ์์
๐ JavaScript
// ์ธ์ฝ๋ฉ
const text = "Hello, Base64!";
const encoded = btoa(text); // Base64๋ก ์ธ์ฝ๋ฉ
console.log(encoded); // "SGVsbG8sIEJhc2U2NCE="
// ๋์ฝ๋ฉ
const decoded = atob(encoded); // ์๋ ํ ์คํธ๋ก ๋์ฝ๋ฉ
console.log(decoded); // "Hello, Base64!"
๐ Python
import base64
# ์ธ์ฝ๋ฉ
text = "Hello, Base64!"
encoded = base64.b64encode(text.encode('utf-8'))
print(encoded) # b'SGVsbG8sIEJhc2U2NCE='
# ๋์ฝ๋ฉ
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded) # "Hello, Base64!"
6. Base64์ URL์ ๊ด๊ณ
Base64๋ ์ผ๋ฐ์ ์ผ๋ก +์ / ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ง๋ง, URL์์ +๋ ๊ณต๋ฐฑ์ผ๋ก ์ฒ๋ฆฌ๋ ์ ์๊ณ /๋ ๊ฒฝ๋ก ๊ตฌ๋ถ์๋ก ์ค์ธ๋ ์ ์์ต๋๋ค.
URL-safe Base64๋ +๋ฅผ -๋ก, /๋ฅผ _๋ก ๋ณํํ์ฌ URL์์๋ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ญ๋๋ค.
7. Base64๋ฅผ ์ธ์ ์ฐ๋ฉด ์ข์๊น?
• ์๊ท๋ชจ ๋ฐ์ดํฐ ์ธ์ฝ๋ฉ์ด ํ์ํ ๊ฒฝ์ฐ
• ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํ ์คํธ๋ก ์์ ํ๊ฒ ์ ์กํ๊ณ ์ ํ ๋
• JSON, HTML, URL ๋ฑ์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ผ ํ ๋
8. Base64 ์ฌ์ฉ ์ ์ฃผ์์
1. ํฐ ํ์ผ์๋ ์ ํฉํ์ง ์์
๋์ฉ๋ ํ์ผ์ Base64๋ก ์ธ์ฝ๋ฉํ๋ฉด ํฌ๊ธฐ์ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ผ๋, ์ธ๋ถ ์คํ ๋ฆฌ์ง๋ฅผ ํ์ฉํ์ธ์.
2. ๋ณด์์ด ์๋
Base64๋ ๋จ์ํ ๋ณํ์ผ ๋ฟ ์ํธํ๊ฐ ์๋๋ฏ๋ก, ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋๋ ์ํธํ ๋ฐฉ์์ ๋ณํํ์ธ์.
๊ฒฐ๋ก
Base64๋ ์น๊ณผ ๋ฐ์ดํฐ ์ ์ก์์ ์์ด์๋ ์ ๋ ํ์ ๋๊ตฌ์ ๋๋ค. ๋จ์ํ์ง๋ง ๊ฐ๋ ฅํ ์ด ๋๊ตฌ๋ฅผ ์ ์ฌ์ ์์ ํ์ฉํ๋ฉด ๋์ฑ ์ต์ ํ๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ง๋ค ์ ์์ต๋๋ค.
๐ท์ ์ค์ ๊ฐ๋ฐ์๊ฐ ๋์ด๋ด ์๋น!๐ท
'Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ๊ณผ์ : ๋์ ๋ณด์ด๋ ์น์ ๋ง๋ฒ! ๐งโโ๏ธ (0) | 2025.03.09 |
---|---|
๐ ์น ์คํ ๋ฆฌ์ง(Web Storage)๋? (0) | 2025.02.19 |
๐ช ์ฟ ํค๋ ๋ฌด์์ธ๊ฐ? (0) | 2025.02.18 |
๐ Permanent Redirect: ๋ธ๋ผ์ฐ์ ์ ๊ธธ์ก์ด๊ฐ ๋๋ 301 ๋ฆฌ๋ค์ด๋ ํธ ์ด์ผ๊ธฐ ๐ (0) | 2025.02.16 |
์ฟผ๋ฆฌ ์คํธ๋ง(Query String): ์น์ ๋ฐ์ดํฐ ์ ๋ฌ์ ์๋ฒฝ ๋ถ์ (0) | 2025.02.14 |