🔐
← กลับไปคู่มือ

Base64 คืออะไร? คู่มือฉบับสมบูรณ์สำหรับผู้เริ่มต้น

· แท็ก: base64, encoding, binary-to-text, web-development, data-transfer

Base64 Encoding คืออะไร?

Base64 เป็นรูปแบบการเข้ารหัสจากไบนารีเป็นข้อความ (binary-to-text) ที่แสดงข้อมูลไบนารีในรูปแบบสตริง ASCII โดยใช้ชุดอักขระ 64 ตัว มันถูกออกแบบมาแต่แรกสำหรับไฟล์แนบอีเมลผ่าน MIME (Multipurpose Internet Mail Extensions) และยังคงเป็นหนึ่งในวิธีการเข้ารหัสที่ใช้กันอย่างแพร่หลายที่สุดบนเว็บ

เมื่อคุณต้องการส่งข้อมูลไบนารี — เช่น รูปภาพ ไฟล์ หรือไบต์ที่บีบอัด — ผ่านช่องทางที่ถูกสร้างขึ้นสำหรับข้อความ Base64 คือโซลูชันที่เหมาะสม มันรับไบต์ใดๆ และแปลงเป็นสตริงตัวอักษร ตัวเลข และอักขระพิเศษสองสามตัวที่ปลอดภัยและพกพาได้

Base64 ทำงานอย่างไร?

Base64 ทำงานโดยการประมวลผลข้อมูลไบนารีเป็นกลุ่มละสามไบต์ (24 บิต) และแปลงแต่ละกลุ่มเป็นอักขระ Base64 สี่ตัว ชื่อ "Base64" มาจากข้อเท็จจริงที่ว่าชุดอักขระการเข้ารหัสใช้อักขระที่แตกต่างกัน 64 ตัว: A-Z, a-z, 0-9, + และ /

อัลกอริทึมการเข้ารหัสทีละขั้นตอน

  1. นำเข้า 3 ไบต์ (24 บิต) ของข้อมูลอินพุต
  2. แบ่งเป็นกลุ่ม 6 บิตสี่กลุ่ม
  3. แมปค่า 6 บิตแต่ละค่า (0-63) ไปยังตารางชุดอักขระ Base64
  4. เพิ่ม padding (=) หากความยาวอินพุตหารด้วย 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"

แล้ว Padding ล่ะ?

หากความยาวอินพุตไม่ใช่จำนวนเท่าของ 3 ไบต์ Base64 จะเพิ่มอักขระ padding (=) เพื่อให้ผลลัพธ์เป็นจำนวนเท่าของ 4 อักขระ:

  • อินพุต 1 ไบต์ → อักขระ Base64 2 ตัว + อักขระ padding 2 ตัว (==)
  • อินพุต 2 ไบต์ → อักขระ Base64 3 ตัว + อักขระ padding 1 ตัว (=)

ตัวอย่างเช่น ไบต์เดียวที่ตรงกับ "M" เข้ารหัสเป็น TQ==

ตารางชุดอักขระ Base64

| Value | Char | Value | Char | Value | Char | Value | Char | |-------|------|-------|------|-------|------|-------|------| | 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 Encoding

ไฟล์แนบอีเมล (MIME)

Base64 ถูกสร้างขึ้นสำหรับ MIME (Multipurpose Internet Mail Extensions) โปรโตคอลอีเมลเช่น SMTP ถูกออกแบบมาสำหรับข้อความ ASCII 7 บิต ดังนั้นไฟล์แนบไบนารีเช่น PDF, รูปภาพ และไฟล์ ZIP ต้องถูกเข้ารหัสเป็น Base64 ก่อนส่งผ่านอีเมล

Data URLs ใน HTML และ CSS

Base64 ช่วยให้คุณฝังรูปภาพ ฟอนต์ และสื่ออื่นๆ โดยตรงในไฟล์ HTML หรือ CSS โดยใช้ data URLs:

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

สิ่งนี้ขจัด HTTP request พิเศษ ซึ่งอาจเป็นประโยชน์สำหรับ assets ขนาดเล็ก

JSON Web Tokens (JWT)

JWT ใช้รูปแบบย่อย Base64 ที่ปลอดภัยสำหรับ URL (Base64url) เพื่อเข้ารหัส header, payload และ signature ของแต่ละโทเค็น นี่คือเหตุผลที่คุณเห็นสตริงอย่าง eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 ในระบบการยืนยันตัวตน

การจัดเก็บข้อมูลไบนารีในฐานข้อมูล

ฐานข้อมูลจำนวนมากถูกปรับให้เหมาะสมสำหรับการจัดเก็บข้อความและอาจไม่จัดการไบต์ดิบได้ดี การเข้ารหัสข้อมูลไบนารีเป็น Base64 ช่วยให้คุณจัดเก็บรูปภาพ, serialized objects หรือข้อมูลที่เข้ารหัสในคอลัมน์ข้อความ

API Payloads

เมื่อส่งข้อมูลไบนารีผ่าน REST หรือ GraphQL API — โดยเฉพาะในรูปแบบ JSON — Base64 เป็นตัวเลือกมาตรฐานเพราะ JSON ไม่สามารถแสดงไบต์ดิบโดยตรงได้

Base64 เพิ่มขนาดไฟล์หรือไม่?

ใช่ การเข้ารหัส Base64 เพิ่มขนาดข้อมูลประมาณ 33% สำหรับทุกๆ 3 ไบต์ของอินพุต คุณจะได้ 4 ไบต์ของผลลัพธ์ ค่าใช้จ่ายนี้คือข้อแลกเปลี่ยนสำหรับการทำให้ข้อมูลไบนารีสามารถส่งผ่านช่องทางข้อความเท่านั้นได้

Base64 เป็นการเข้ารหัสลับ (Encryption) หรือไม่?

ไม่ใช่ นี่เป็นความเข้าใจผิดที่พบบ่อย Base64 เป็นรูปแบบการเข้ารหัส (encoding) ไม่ใช่การเข้ารหัสลับ (encryption) ใครก็ตามที่ได้รับสตริง Base64 สามารถถอดรหัสกลับเป็นข้อมูลต้นฉบับได้โดยไม่ต้องใช้กุญแจใดๆ มันไม่มีการรักษาความปลอดภัยหรือความลับใดๆ ทั้งสิ้น หากคุณต้องการปกป้องข้อมูล ให้ใช้การเข้ารหัสลับ (เช่น AES) และจากนั้นเข้ารหัสไบต์ที่เข้ารหัสแล้วด้วย Base64 เพื่อการส่งผ่านข้อมูล (เป็นทางเลือก)

Base64 เทียบกับการเข้ารหัสไบนารีเป็นข้อความแบบอื่น

| Encoding | Alphabet Size | Overhead | Best For | |----------|--------------|----------|----------| | Base64 | 64 chars | ~33% | Data transfer and embedding | | Base32 | 32 chars | ~60% | Human-readable, case-insensitive contexts | | Base16 (Hex) | 16 chars | 100% | Debugging, memory dumps, color codes | | Ascii85 | 85 chars | ~25% | Adobe PostScript, PDF streams |

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

ลองใช้การเข้ารหัส Base64 ออนไลน์

พร้อมที่จะเข้ารหัสข้อมูลของคุณเองหรือยัง? ใช้ เครื่องมือเข้ารหัสและถอดรหัส Base64 ออนไลน์ฟรี เพื่อแปลงข้อความหรือไฟล์ทันทีในเบราว์เซอร์ของคุณ ไม่ต้องติดตั้งหรือสมัครสมาชิก