ตัวแปลงไฟล์เป็น Base64

ลากไฟล์ใดก็ได้มาวาง ไม่ว่าจะเป็นเอกสาร ไฟล์บีบอัด ฟอนต์ ใบรับรอง หรือโปรแกรม แล้วรับผลการเข้ารหัส Base64 ในรูปข้อความล้วนหรือ data URI ทุกขั้นตอนทำงานภายในเบราว์เซอร์ของคุณ

ทำงานภายในเบราว์เซอร์ของคุณทั้งหมด ไม่มีการอัปโหลดข้อมูลใด ๆ

วิธีใช้งาน

  1. ลากไฟล์มาวางในพื้นที่อัปโหลด หรือคลิกเพื่อเลือกไฟล์จากอุปกรณ์ของคุณ (ไม่เกิน 100 MB)
  2. เลือก “เอาต์พุต” เป็น Base64 ล้วนสำหรับ API และไฟล์การตั้งค่า หรือเป็น Data URI สำหรับ HTML และ CSS
  3. เปิด “ตัดบรรทัดทุก 76 อักขระ” เฉพาะเมื่อปลายทางต้องการบรรทัดแบบ MIME เช่น เนื้อหาอีเมล
  4. ตรวจสอบชื่อไฟล์ ชนิด MIME และขนาด จากนั้นกด “คัดลอก” หรือ “ดาวน์โหลด” ผลลัพธ์เป็นไฟล์ .txt

ทำไมต้องเข้ารหัสไฟล์เป็น Base64

รูปแบบข้อมูลหลายชนิดที่ใช้รับส่งข้อมูลระหว่างระบบรองรับเฉพาะข้อความ JSON, XML, YAML, HTML และส่วนหัวอีเมลไม่สามารถเก็บไบต์ใด ๆ ได้ตามใจ เพราะไฟล์อาจมีไบต์ศูนย์ ลำดับอักขระที่ไม่ถูกต้อง หรืออักขระขึ้นบรรทัดใหม่ที่ตัวแยกวิเคราะห์ข้อความจะเปลี่ยนแปลง Base64 จับคู่ทุก 3 ไบต์ของไฟล์เป็น 4 อักขระจากชุดอักขระ 64 ตัว ได้แก่ ตัวอักษร ตัวเลข + และ / ไฟล์ทุกชนิดจึงส่งต่อในรูปสตริงธรรมดาได้ และถอดรหัสกลับเป็นไบต์เดิมได้ทุกประการ

สิ่งที่ต้องแลกคือขนาด ข้อความที่เข้ารหัสแล้วจะใหญ่กว่าไฟล์ประมาณ 33% และการขึ้นบรรทัดใหม่จะเพิ่มขนาดอีกเล็กน้อย ไฟล์ขนาด 3 MB จะกลายเป็น Base64 ประมาณ 4 MB

การใช้งานทั่วไป

  • API แบบ JSON และ XML ปลายทาง API ที่ไม่รับการอัปโหลดแบบ multipart form มักต้องการไฟล์เป็นสตริง Base64 ในฟิลด์หนึ่ง โดยมีชื่อและชนิดไฟล์อยู่ในฟิลด์อื่น
  • ไฟล์แนบอีเมล MIME เข้ารหัสไฟล์แนบด้วย Base64 โดยแต่ละบรรทัดยาวไม่เกิน 76 อักขระ (RFC 2045) การตัดบรรทัดจะให้รูปแบบเดียวกันนี้
  • การตั้งค่าและข้อมูลลับ ค่าภายใต้ data ใน Kubernetes Secret เป็น Base64 ใบรับรอง TLS, keystore หรือไฟล์ใบอนุญาตจึงต้องเข้ารหัสก่อนใส่ลงในไฟล์ manifest ระบบ CI ก็มักเก็บข้อมูลลับแบบไบนารีไว้ในตัวแปรสภาพแวดล้อมด้วยวิธีเดียวกัน
  • ฐานข้อมูลและซอร์สโค้ด ไฟล์ไบนารีขนาดเล็ก เช่น ฟอนต์ เสียง หรือข้อมูลทดสอบ สามารถเก็บไว้ในคอลัมน์ข้อความหรือค่าคงที่แบบสตริงแทนการแยกเป็นไฟล์ต่างหาก

สำหรับรูปภาพ เครื่องมือ แปลงรูปภาพเป็น Base64 มีการปรับขนาดและโค้ด HTML และ CSS สำเร็จรูปเพิ่มเติม หากต้องการแปลง Base64 กลับเป็นไฟล์ ให้ใช้ แปลง Base64 เป็นไฟล์

Base64 ล้วนหรือ data URI

Base64 ล้วนมีเพียงไบต์ที่เข้ารหัสแล้วเท่านั้น ซึ่งเป็นรูปแบบที่ API, Kubernetes, ฐานข้อมูล และไลบรารีโปรแกรมส่วนใหญ่ต้องการ โดยมักมีฟิลด์แยกสำหรับชื่อไฟล์หรือชนิดเนื้อหา

data URI จะเพิ่มส่วนนำหน้าที่ระบุชนิด MIME เช่น data:application/pdf;base64, เบราว์เซอร์จึงใช้สตริงทั้งหมดเป็น URL ใน src, href หรือ url() ของ CSS ได้ อย่าส่งส่วนนำหน้านี้ไปยัง API ที่ต้องการ Base64 ล้วน เพราะตัวถอดรหัสจำนวนมากจะปฏิเสธข้อมูล หากต้องการกำหนดชนิด MIME เองหรือใช้การเข้ารหัสแบบเปอร์เซ็นต์ ลองใช้ ตัวสร้าง Data URI

ควรปิดการตัดบรรทัดเมื่อใช้กับ JSON, YAML และซอร์สโค้ด สตริง JSON ไม่สามารถมีอักขระขึ้นบรรทัดใหม่โดยตรงได้ และค่าที่ถูกตัดบรรทัดใน YAML ก็เสียหายได้ง่าย

เข้ารหัสไฟล์ด้วยบรรทัดคำสั่ง

# Linux (GNU coreutils): -w 0 ปิดการตัดบรรทัดทุก 76 อักขระที่เป็นค่าเริ่มต้น
base64 -w 0 report.docx > report.txt

# macOS
base64 -i report.docx -o report.txt

# Windows PowerShell
[Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\files\report.docx"))

# Kubernetes เข้ารหัสไฟล์ให้โดยอัตโนมัติ
kubectl create secret generic app-cert --from-file=tls.crt

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

มีข้อจำกัดเรื่องขนาดไฟล์หรือไม่

เข้ารหัสไฟล์ได้สูงสุด 100 MB ผลลัพธ์จะใหญ่ขึ้นประมาณหนึ่งในสาม ไฟล์ขนาด 100 MB จึงให้ข้อความประมาณ 133 MB การแสดงข้อความปริมาณมากขนาดนี้อาจทำให้หน้าเว็บช้าลง สำหรับไฟล์ขนาดใหญ่ ให้ใช้ปุ่ม “ดาวน์โหลด” แทนการคัดลอกจากช่องเอาต์พุต

ไฟล์ของฉันถูกอัปโหลดไปยังเซิร์ฟเวอร์หรือไม่

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

Base64 บีบอัดหรือเข้ารหัสลับไฟล์หรือไม่

ไม่ทั้งสองอย่าง Base64 ทำให้ข้อมูลใหญ่ขึ้นประมาณ 33% และใครก็ถอดรหัสได้ หากไฟล์ต้องเป็นความลับ ให้เข้ารหัสลับก่อนแปลงเป็น Base64 และหากขนาดเป็นเรื่องสำคัญ ให้บีบอัดก่อน เช่น เป็นไฟล์ ZIP หรือ gzip

ทำไมเอาต์พุตจึงมีการขึ้นบรรทัดใหม่

เพราะเปิดตัวเลือก “ตัดบรรทัดทุก 76 อักขระ” ไว้ ซึ่งตรงกับรูปแบบ MIME ที่ใช้ในอีเมล แต่ API, เอกสาร JSON และไฟล์ manifest ของ Kubernetes ส่วนใหญ่ต้องการข้อความบรรทัดเดียวที่ไม่ขาดตอน จึงควรปิดตัวเลือกนี้เมื่อใช้งานกับสิ่งเหล่านั้น

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