Base64 Encoder & Decoder

แปลงข้อความและไฟล์เป็น Base64 และแปลงกลับ จัดการ Unicode ได้ถูกต้อง รองรับ base64url แบบ URL-safe และบอกเหตุผลที่ชัดเจนเมื่อข้อมูลไม่ถูกต้อง

ทำงานในเบราว์เซอร์ไม่ต้องสมัครไม่มีการอัปโหลด

ผลลัพธ์ Base64

วิธีใช้ Base64 เข้ารหัส / ถอดรหัส

  1. เลือก เข้ารหัส หรือ ถอดรหัส
  2. พิมพ์หรือวางข้อมูลของคุณ ผลลัพธ์จะอัปเดตทันทีที่คุณพิมพ์
  3. สำหรับ URL, JWT และชื่อไฟล์ ให้ติ๊ก URL-safe เพื่อใช้ - และ _ และเลือกตัด padding = ออกได้
  4. หากต้องการฝังรูปภาพหรือฟอนต์ ให้คลิก เข้ารหัสไฟล์ และเปิด ผลลัพธ์แบบ data URI ไว้
  5. คัดลอกผลลัพธ์ หรือใช้ สลับ เพื่อส่งกลับเข้าไปในทิศทางตรงข้าม

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

Base64 แทนข้อมูลไบนารีด้วยอักขระ ASCII ที่พิมพ์ได้ 64 ตัว: A-Z, a-z, 0-9, + และ / ข้อมูลขาเข้าทุก 3 ไบต์จะกลายเป็น 4 อักขระ ข้อมูลที่เข้ารหัสแล้วจึงใหญ่ขึ้นประมาณ 33% เมื่อความยาวข้อมูลไม่ใช่ผลคูณของ 3 จะมีเครื่องหมาย = หนึ่งหรือสองตัวเติมท้ายผลลัพธ์ Base64 เป็น การเข้ารหัสรูปแบบ (encoding) ไม่ใช่การเข้ารหัสลับ (encryption): ใครก็ถอดรหัสได้

Base64 มาตรฐาน vs. base64url

อักขระ + และ / มีความหมายพิเศษใน URL และ path ของไฟล์ ชุดอักขระแบบ URL-safe จาก RFC 4648 §5 จึงแทนด้วย - และ _ และมักไม่ใส่ padding JWT, พารามิเตอร์ OAuth หลายตัว และ cloud API บางตัวใช้ base64url ตัวถอดรหัสที่นี่รองรับทั้งสองแบบโดยอัตโนมัติ

Unicode และกับดักของ btoa()

ในเบราว์เซอร์ btoa("café") ทำงานได้ แต่ btoa("日本") จะเกิดข้อผิดพลาด เพราะ btoa รับเฉพาะ Latin-1 วิธีที่ถูกต้องคือแปลงข้อความเป็นไบต์ UTF-8 ก่อน ซึ่งเครื่องมือนี้ทำให้ ใน JavaScript: btoa(String.fromCharCode(...new TextEncoder().encode(text))) หรือ Buffer.from(text).toString('base64') ใน Node.js

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

  • Data URI สำหรับรูปภาพและฟอนต์ขนาดเล็กใน CSS หรือ HTML
  • เฮดเดอร์ HTTP Basic authentication (user:password ที่เข้ารหัสแล้ว)
  • ไฟล์แนบไบนารีใน JSON payload และอีเมล (MIME)
  • Kubernetes Secrets ซึ่งเก็บค่าเป็น Base64

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

Base64 เป็นการเข้ารหัสลับหรือไม่?
ไม่ใช่ Base64 เป็นการเข้ารหัสที่ย้อนกลับได้และไม่มีคีย์ ใครก็ถอดรหัสได้ จึงไม่ควรใช้ซ่อนรหัสผ่านหรือข้อมูลลับ
ทำไม Base64 ของฉันถอดรหัสไม่ได้?
สาเหตุที่พบบ่อยคืออักขระที่อยู่นอกชุดอักขระ (มักเป็นอัญประกาศหรือการขึ้นบรรทัดที่ติดมาตอนคัดลอก) สตริงที่ถูกตัดหาย หรือมีข้อความที่ไม่ใช่ Base64 ปนอยู่ ข้อความแสดงข้อผิดพลาดจะบอกตำแหน่งของปัญหาแรก
ผลลัพธ์ที่ถอดรหัสแล้วอ่านไม่ออก เพราะอะไร?
ข้อมูลน่าจะเป็นไบนารี เช่น รูปภาพ ไฟล์บีบอัด หรือไบต์ที่เข้ารหัสลับ ไม่ใช่ข้อความ เครื่องมือจะตรวจจับได้ แสดง hex dump และให้คุณดาวน์โหลดไบต์ดิบได้
จำเป็นต้องมี padding = หรือไม่?
ตัวถอดรหัสหลายตัว รวมถึงตัวนี้ ทำงานได้โดยไม่ต้องมี เพราะความยาวบอกได้ว่าขาดไปกี่ไบต์ ตัวถอดรหัสบางตัวที่เข้มงวดต้องมี padding ส่วน JWT และการใช้ base64url ส่วนใหญ่จะไม่ใส่ padding
ไฟล์ของฉันถูกอัปโหลดหรือไม่?
ไม่ ไฟล์ถูกอ่านและเข้ารหัสภายในเครื่องด้วย File API ของเบราว์เซอร์ ไม่มีข้อมูลใดถูกส่งไปยังเซิร์ฟเวอร์

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