อธิบายฟอร์แมต Base64 แบบมาตรฐานกับ URL-safe ต่างกันอย่างไร

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

2026-09-30 · 5 นาทีในการอ่าน

Base64 แบบมาตรฐาน

Base64 แบบมาตรฐานตาม RFC 4648 ใช้อักขระ 64 ตัวประกอบด้วยตัวอักษร A-Z, a-z, ตัวเลข 0-9 และเครื่องหมาย + กับ / พร้อมเครื่องหมาย = สำหรับ padding เป็นฟอร์แมตดั้งเดิมที่ใช้กันแพร่หลายที่สุด ทั้งในไฟล์แนบอีเมลและระบบเกือบทั้งหมด

จุดเด่นคือเครื่องมือทุกตัวรองรับโดยไม่มีข้อยกเว้น แต่ข้อจำกัดคืออักขระ + และ / มีความหมายพิเศษใน URL ถ้านำรหัสมาตรฐานไปใส่ใน URL ตรงๆ อาจถูกตีความผิด จึงเกิดฟอร์แมต URL-safe ขึ้นมาเพื่อแก้ปัญหานี้โดยเฉพาะ

Base64 แบบ URL-safe

Base64 แบบ URL-safe เปลี่ยนอักขระ + เป็นขีด - และ / เป็นขีดล่าง _ เพื่อให้รหัสอยู่ใน URL หรือชื่อไฟล์ได้อย่างปลอดภัยโดยไม่ต้องเข้ารหัสเพิ่ม นิยมใช้ใน JWT token และพารามิเตอร์ของ API สมัยใหม่

ข้อสังเกตคือ URL-safe มักตัดเครื่องหมาย = ท้ายรหัสออกด้วยเพราะไม่จำเป็นต่อการถอดรหัสในหลายกรณี ถ้าเจอรหัสที่ไม่มี = แต่มี - กับ _ ปนอยู่ ให้สันนิษฐานไว้ก่อนว่าเป็นแบบ URL-safe แล้วใช้เครื่องมือที่รองรับ

padding บอกอะไรเราได้บ้าง

padding หรือเครื่องหมาย = ท้ายรหัสมีหน้าที่เติมให้รหัสมีความยาวครบตามมาตรฐาน อาจมีหนึ่งหรือสองตัวหรือไม่มีเลยก็ได้ขึ้นอยู่กับขนาดข้อมูลต้นฉบับ ถือเป็นส่วนหนึ่งของรหัสที่ถูกต้อง ไม่ใช่สัญลักษณ์ตกค้าง

วิธีตรวจสอบรหัสง่ายๆ คือดูว่าความยาวทั้งหมดหารด้วย 4 ลงตัวหรือไม่ ถ้าลงตัวแสดงว่าโครงสร้างถูกต้อง ถ้าเจอรหัสที่ความยาวไม่ลงตัว ให้สงสัยไว้ก่อนว่าอาจคัดลอกมาไม่ครบ

การขึ้นบรรทัดใหม่แบบ MIME

ตามมาตรฐานอีเมล MIME รหัส Base64 จะถูกตัดขึ้นบรรทัดใหม่ทุกๆ 76 ตัวอักษร เพื่อให้สอดคล้องกับข้อจำกัดความยาวบรรทัดของระบบอีเมลยุคเก่า รหัสที่ได้จากไฟล์แนบอีเมลจึงมักมีหลายบรรทัด ไม่ใช่บรรทัดเดียวยาวๆ

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

สรุปวิธีเลือกฟอร์แมตให้ถูก

จำง่ายๆ ว่างานทั่วไปใช้แบบมาตรฐาน งานที่เกี่ยวกับ URL หรือ JWT ใช้แบบ URL-safe ถ้าเจอรหัสที่มี - กับ _ ให้รู้ทันทีว่าเป็น URL-safe และถ้ารหัสลงท้ายด้วย = แสดงว่าเป็นมาตรฐาน

เมื่อต้องแปลงระหว่างสองแบบด้วยตัวเอง จำสูตรว่า + กลายเป็น - และ / กลายเป็น _ พร้อมตัด = ท้ายออก สูตรนี้ใช้ได้ทุกครั้งไม่ต้องเปิดตารางเทียบ

คำถามที่พบบ่อย

จะรู้ได้อย่างไรว่ารหัสที่ใช้เป็นแบบมาตรฐานหรือ URL-safe

ดูจากอักขระในรหัส ถ้ามี + / หรือ = แสดงว่าเป็นแบบมาตรฐาน ถ้ามี - หรือ _ แทนและไม่มี = ท้าย แสดงว่าเป็นแบบ URL-safe

แปลง Base64 มาตรฐานให้เป็น URL-safe เองได้หรือไม่

ได้โดยแทนที่ + ด้วย - และ / ด้วย _ แล้วลบ = ท้ายออก แต่ต้องแน่ใจว่าปลายทางรองรับ URL-safe ไม่เช่นนั้นอาจถอดรหัสไม่ได้

ทำไม JWT token ถึงไม่มีเครื่องหมาย =

เพราะ JWT ใช้ Base64 แบบ URL-safe ที่ตัด padding ออกโดยตั้งใจ เป็นไปตามมาตรฐานของ JWT โดยเฉพาะ ไม่ใช่รหัสที่ผิดปกติ

รหัสที่มีการขึ้นบรรทัดหลายบรรทัดถอดรหัสได้ปกติหรือไม่

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

คู่มือที่เกี่ยวข้อง