fixmint
TH

Base64 คืออะไร ทำไมข้อมูลใหญ่ขึ้น และถอดรหัสอย่างไร

โดย · · อัปเดตเมื่อ 8 พฤศจิกายน 2026 · อ่าน 5 นาที

Base64 เขียนข้อมูลไบนารีเป็นข้อความธรรมดาโดยใช้อักขระ 64 ตัว ได้แก่ A ถึง Z, a ถึง z, 0 ถึง 9 และ + กับ / ทุกไบต์สามตัวจะกลายเป็นอักขระสี่ตัว ดังนั้นข้อความจึงยาวกว่าข้อมูลที่บรรจุอยู่ราวหนึ่งในสาม ผู้คนใช้วิธีนี้เมื่อรูปแบบนั้นรับเฉพาะข้อความ เช่น data URL ในหน้าเว็บ ฟิลด์ใน JSON หรือไฟล์แนบอีเมล

เข้ารหัสและถอดรหัส Base64อ่านหรือสร้างข้อความ Base64ใช้ฟรี

ทำไมรูปแบบข้อความถึงต้องใช้วิธีนี้

หลายรูปแบบถูกออกแบบมาสำหรับข้อความเท่านั้น เนื้อหาอีเมล ไฟล์ JSON และไฟล์ CSS เก็บตัวอักษรและสัญลักษณ์ได้อย่างปลอดภัย แต่รูปภาพดิบหรือไฟล์ zip มีค่าไบต์ที่บางระบบอาจเปลี่ยนแปลง ตัดทอน หรืออ่านเป็นรหัสควบคุม Base64 ใช้เฉพาะอักขระที่ทุกระบบข้อความส่งต่อโดยไม่เปลี่ยนแปลง ข้อมูลจึงถึงปลายทางครบถ้วน วิธีนี้กำหนดไว้ใน RFC 4648

Base64 เป็นการเข้ารหัสที่ไม่ได้ทำให้ข้อมูลเป็นความลับ ใครก็ถอดรหัสได้โดยไม่ต้องใช้กุญแจ จึงห้ามใช้เพื่อซ่อนรหัสผ่านหรือข้อมูลส่วนตัวเด็ดขาด

ไบต์สามตัวกลายเป็นอักขระสี่ตัวได้อย่างไร

ยกตัวอย่างคำว่า Man ซึ่งมีสามไบต์ ได้แก่ 77, 97 และ 110 ในฐานสิบ ทั้งสามไบต์รวมกันได้ 24 บิต เมื่อตัดบิตทั้ง 24 ออกเป็นสี่กลุ่มละ 6 บิต แต่ละกลุ่มจะเป็นตัวเลขตั้งแต่ 0 ถึง 63 ซึ่งชี้ไปยังอักขระหนึ่งตัวในตัวอักษร Man จึงกลายเป็น TWFu

หกบิตระบุได้เพียง 64 ค่า อักขระสี่ตัวจึงบรรจุข้อมูลสามไบต์ ผลลัพธ์จึงใหญ่กว่าอินพุตราวหนึ่งในสาม ก่อนที่จะเพิ่มการขึ้นบรรทัดใหม่

เมื่อข้อมูลแบ่งเป็นกลุ่มสามไบต์ไม่ลงตัว ตัวเข้ารหัสจะเติมเครื่องหมาย = ไว้ท้ายข้อความ ตัวอย่างเช่น Ma ซึ่งมีสองไบต์ กลายเป็น TWE= และ M ซึ่งมีหนึ่งไบต์ กลายเป็น TQ== เครื่องหมาย padding บอกตัวถอดรหัสว่ากลุ่มสุดท้ายมีกี่ไบต์

ต้องแปลงข้อความเป็น UTF-8 ก่อน

Base64 ทำงานกับไบต์ ส่วนข้อความประกอบด้วยอักขระ อักขระอย่าง é หรือ ✓ ถูกเก็บเป็นมากกว่าหนึ่งไบต์ในรูปแบบ UTF-8 ซึ่งเป็นการเข้ารหัสที่ใช้กันทั่วเว็บ ฟังก์ชัน btoa() ของเบราว์เซอร์รับสตริงและถือว่าแต่ละอักขระคือหนึ่งไบต์ จึงล้มเหลวกับอักขระที่เกินช่วงอักษรละตินพื้นฐาน เมื่อเรียกกับเครื่องหมายถูก จะเกิด InvalidCharacterError

วิธีแก้คือแปลงข้อความเป็นไบต์ UTF-8 ก่อน แล้วค่อยเข้ารหัสไบต์เหล่านั้น วลี héllo ✓ มี 10 ไบต์ใน UTF-8 และ Base64 ของมันคือ aMOpbGxvIOKckw== เข้ารหัสและถอดรหัส Base64 จะทำขั้นตอนนี้ให้คุณ เมื่อถอดรหัส เครื่องมือจะอ่านไบต์กลับเป็น UTF-8 หากไบต์เหล่านั้นไม่ใช่ข้อความ UTF-8 ที่ถูกต้อง เครื่องมือจะถือว่าเป็นไฟล์และเสนอให้ดาวน์โหลด

Base64 แบบ URL-safe

Base64 มาตรฐานมี + และ / ใน URL เครื่องหมาย + อาจหมายถึงช่องว่าง และ / ใช้แบ่งส่วนของพาธ สตริง Base64 จึงทำให้ลิงก์เสียได้ รูปแบบ URL-safe (RFC 4648 หัวข้อ 5) ใช้ - และ _ แทน และมักตัด padding ด้วย = ใช้รูปแบบนี้เมื่อสตริงต้องใส่ใน URL ชื่อไฟล์ หรือโทเคน ตัวถอดรหัสยอมรับทั้งสองรูปแบบ ไม่ว่าจะมี padding หรือไม่ก็ตาม

หาก Base64 มาจากลิงก์ ให้ถอดรหัส URL ก่อน ค่าที่ถูกเข้ารหัสแบบเปอร์เซ็นต์ในลิงก์ต้องถูกถอดรหัสก่อน Base64 ของมันจึงจะอ่านได้ คู่มือการเข้ารหัสแบบเปอร์เซ็นต์ อธิบายกฎสำหรับลิงก์

กรณีที่พบบ่อยที่สุดคือโทเคนการเข้าสู่ระบบ JSON Web Token ประกอบด้วยสามส่วนแบบ Base64url คั่นด้วยจุด ได้แก่ ส่วนหัว (header) ข้อมูล และลายเซ็น ตัวถอดรหัส JWT จะแยกส่วนเหล่านั้นและแสดงส่วนหัวกับข้อมูลเป็น JSON ที่อ่านได้

Data URL และรูปภาพ

data URL ใส่ไฟล์ไว้ภายในลิงก์เอง รูปแบบคือ data: ตามด้วยประเภทสื่อ แล้วตามด้วย ;base64, จากนั้นเป็นจุลภาคและข้อมูล รูปภาพขนาดเล็กจะกลายเป็น data:image/png;base64 ตามด้วยไบต์ที่เข้ารหัสแล้ว หน้าเว็บและสไตล์ชีตรองรับรูปแบบนี้ ซึ่งช่วยประหยัดคำขอสำหรับไอคอนเล็กๆ

ข้อเสียคือขนาด ข้อมูลใหญ่ขึ้นราวหนึ่งในสาม และถูกส่งไปพร้อมกับหน้าเว็บหรือสไตล์ชีต แทนที่จะเป็นไฟล์แยกที่เบราว์เซอร์แคชได้ ใช้ data URL กับรูปเล็กๆ ไม่ใช่รูปถ่ายขนาดใหญ่ หากรูปมีขนาดใหญ่ ให้บีบอัดรูปภาพก่อนเข้ารหัส

เมื่อถอดรหัส Base64 ในเครื่องมือ เครื่องมือจะตรวจไบต์แรกๆ ของข้อมูล ไฟล์ PNG, JPEG, GIF และ WebP แต่ละไฟล์เริ่มต้นด้วยลายเซ็นที่รู้จัก ดังนั้นเครื่องมือจึงแสดงภาพตัวอย่างและเสนอให้ดาวน์โหลด data URL ที่มีประเภทรูปภาพก็จะแสดงเป็นรูปเช่นกัน

วิธีใช้งานกับ fixmint

  1. เลือก เข้ารหัส หรือ ถอดรหัส เหนือ ข้อความหรือ Base64 แล้ววางข้อความหรือ Base64 ของคุณ
  2. ทำเครื่องหมาย ตัวอักษรแบบ URL-safe ไม่มี = padding สำหรับโทเคน ชื่อไฟล์ และลิงก์ ตัวถอดรหัสรับทั้งสองรูปแบบอยู่แล้ว
  3. หากต้องการสร้าง data URL จากไฟล์ ให้ลากไฟล์ไปวางในพื้นที่วางไฟล์ แล้วทำเครื่องหมาย สำหรับไฟล์: ส่งออกเป็น data: URL
  4. คัดลอกผลลัพธ์ หากไบต์ที่ถอดรหัสแล้วเป็นไฟล์ ไม่ใช่ข้อความ ให้ใช้ปุ่มดาวน์โหลดที่เครื่องมือเสนอ

ข้อผิดพลาดที่พบบ่อยตอนถอดรหัส

  • มีอักขระที่ไม่อนุญาต อินพุตมีอักขระที่อยู่นอกชุด 64 ตัว เช่น เครื่องหมายคำพูดจากประโยคที่คัดลอกมา ตรวจสอบว่าข้อความมาจากที่ใด เว้นวรรคกว้างศูนย์ (zero-width space) ในข้อความที่คัดลอกก็ทำให้เกิดข้อผิดพลาดแบบเดียวกัน ให้ลบอักขระที่มองไม่เห็นแล้วลองอีกครั้ง คู่มือเรื่องอักขระที่มองไม่เห็น อธิบายที่มาของอักขระเหล่านี้
  • ความยาวไม่ถูกต้อง ขาดหรือเกินอักขระไปหนึ่งตัว ซึ่งมักหมายความว่าการคัดลอกถูกตัดไปครึ่งทาง
  • การขึ้นบรรทัดใหม่และช่องว่าง อีเมล (MIME) ตัด Base64 ทุก 76 อักขระ ตัวถอดรหัสจะลบช่องว่างและการขึ้นบรรทัดใหม่ออก ดังนั้นคุณจึงวางข้อความที่ถูกตัดบรรทัดได้ตามที่เป็น
  • ขาด padding บางระบบตัดเครื่องหมาย = ทิ้ง ตัวถอดรหัสจะเติมให้กลับ

กรณีพิเศษ

  • ผลลัพธ์ที่ถอดรหัสแล้วดูไร้ความหมาย อาจเป็นไฟล์ ไม่ใช่ข้อความ ไฟล์ zip, PDF หรือโปรแกรมจะถอดรหัสเป็นไบต์ที่ไม่อ่านเป็นข้อความ เครื่องมือจะเสนอให้ดาวน์โหลดไฟล์เหล่านั้น
  • อินพุตขนาดใหญ่มาก ทั้งไฟล์จะถูกเก็บไว้ในเบราว์เซอร์ระหว่างการเข้ารหัสหรือถอดรหัส ไฟล์ที่ใหญ่มากจึงอาจทำงานช้า และบนโทรศัพท์อาจล้มเหลวได้

คำตอบสั้นๆ

Base64 เหมือนการเข้ารหัสลับหรือไม่?

ไม่ใช่ เป็นการเข้ารหัสที่ย้อนกลับได้โดยไม่ต้องใช้กุญแจ ใครก็ถอดรหัสได้

ทำไม Base64 ที่ได้จึงยาวกว่าไฟล์?

ไบต์ทุกชุดสามไบต์จะกลายเป็นอักขระสี่ตัว ข้อความจึงใหญ่กว่าราวหนึ่งในสาม

ทำไมสตริง Base64 ที่คัดลอกมาถอดรหัสไม่สำเร็จ?

มักเป็นเพราะอักขระหายหรือถูกเพิ่มระหว่างการคัดลอก เช่น การขึ้นบรรทัดใหม่ผิดตำแหน่ง หรืออักขระตัวสุดท้ายหายไป ให้คัดลอกใหม่จากต้นทาง

แปลจาก ฉบับภาษาอังกฤษ ด้วยความช่วยเหลือของ AI

ความคิดเห็น

    ยังไม่มีความคิดเห็น มาเป็นคนแรกกันเลย

    คะแนนของคุณ (ไม่บังคับ)

    อีเมลของคุณจะไม่ถูกแสดงหรือเก็บไว้

    ปกของ How to Remain Valuable When Intelligence Becomes CheapHow to Remain Valuable When Intelligence Becomes Cheap

    224 หน้าว่าด้วยข้อได้เปรียบของมนุษย์ ด้านเศรษฐกิจ และด้านกลยุทธ์ ที่ยังคงหายากแม้ AI จะทำงานด้านการคิดได้เกือบทั้งหมด

    $3.84ซื้อบน Gumroadฉบับภาษาอังกฤษ