OnlyGroub
เทคโนโลยี

Base64 คืออะไร ใช้ทำอะไรในโลกของ Web Dev

อธิบาย Base64 encoding แบบเข้าใจง่าย ไม่ใช่การเข้ารหัสเพื่อความปลอดภัย แล้วมันทำงานยังไงและใช้ตรงไหนบ้าง

20 พฤศจิกายน 2568 อ่าน 5 นาที
#Base64 #Web Development #เทคโนโลยี

ถ้าคุณเคยเห็นสตริงยาวๆ ที่มีตัวอักษรแปลกๆ อย่าง SGVsbG8gV29ybGQ= นั่นแหละคือ Base64 encoding

Base64 คืออะไร

Base64 คือวิธีการ encoding ข้อมูลไบนารีให้อยู่ในรูปแบบตัวอักษร ASCII 64 ตัว ได้แก่:

  • A-Z (26 ตัว)
  • a-z (26 ตัว)
  • 0-9 (10 ตัว)
    • และ / (2 ตัว)
  • = ใช้เป็น padding

รวมเป็น 64 ตัวอักษร จึงเรียกว่า Base64

Base64 ≠ การเข้ารหัส (Encryption)

นี่คือความเข้าใจผิดที่พบบ่อยที่สุด! Base64 ไม่ได้ ทำให้ข้อมูลปลอดภัย ใครก็ decode ได้ทันทีโดยไม่ต้องใช้ key

ตัวอย่าง: SGVsbG8= → decode → Hello

Base64 ทำงานยังไง

ข้อมูลเดิม (binary) จะถูกแบ่งเป็นกลุ่มๆ ละ 6 บิต แล้วแมปไปยังตัวอักษรใน Base64 table

ตัวอย่าง: ตัวอักษร “M” = ASCII 77 = binary 01001101

กระบวนการ encode:

  1. แปลง “Man” → binary bytes
  2. รวม 3 bytes (24 bits) → แบ่งเป็น 4 กลุ่ม ๆ ละ 6 bits
  3. แต่ละกลุ่ม map กับตัวอักษร Base64
  4. ผลลัพธ์: TWFu

เพราะ 3 bytes → 4 ตัวอักษร ดังนั้น Base64 จึงเพิ่มขนาดข้อมูลประมาณ 33%

ใช้ตรงไหนบ้างในชีวิต Dev

1. Data URLs (Inline Images)

แทนที่จะ link ไฟล์รูปภาพ สามารถ embed รูปลงใน HTML/CSS ได้เลย:

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

เหมาะกับ icon เล็กๆ ที่ต้องการลด HTTP requests

2. JWT (JSON Web Tokens)

ส่วน header และ payload ของ JWT ถูก encode ด้วย Base64URL (เวอร์ชันที่ใช้ - และ _ แทน + และ /)

3. Email Attachments

ระบบ email ส่งได้แค่ข้อความ MIME จึงใช้ Base64 encode ไฟล์แนบให้เป็น text ก่อนส่ง

4. Basic Authentication

HTTP header สำหรับ Basic Auth: Authorization: Basic dXNlcjpwYXNz ซึ่ง decode ได้เป็น user:pass

5. Storing Binary in JSON/XML

Database หรือ API ที่รับแค่ string อาจใช้ Base64 เก็บข้อมูล binary เช่น ไฟล์ PDF หรือรูปภาพ

Base64URL vs Base64

ตัวอักษรBase64Base64URL
62+-
63/_
Padding=ไม่มีหรือละเว้น

Base64URL ใช้ใน JWT, URL, filename เพราะ + และ / มีความหมายพิเศษใน URL

สรุป

Base64 คือเครื่องมือแปลงข้อมูล ไม่ใช่ความปลอดภัย ใช้เมื่อต้องการส่งข้อมูล binary ผ่านช่องทางที่รองรับแค่ text เช่น email, URL, JSON

ลองใช้ เครื่องมือแปลง Base64 ของเราได้เลย