การเข้ารหัส Base64 คืออะไร? คำอธิบายฉบับสมบูรณ์
ตอบด่วน
Base64 encoding แปลง binary เป็น text ด้วยอักขระ 64 ตัว (A-Z, a-z, 0-9, +, /) 3 bytes input เป็น 4 อักขระ Base64 Base64 ย้อนกลับได้ (ไม่ใช่ encryption) และเพิ่มขนาด ~33% ใช้ Base64 Encoder และ Decoder ฟรีของเรา
การแนะนำ
Base64 เป็นรูปแบบ binary-to-text ที่แปลงข้อมูล binary เป็น ASCII ด้วยอักขระพิมพ์ได้ 64 ตัว กำหนดโดย RFC 4648 ใช้ในไฟล์แนบ email (MIME), Data URLs, ส่วน JWT token และ JSON payload ที่มีข้อมูล binary Base64 เป็น encoding ไม่ใช่ encryption —ย้อนกลับได้เต็มที่ ไม่ต้องมี key
ทีละขั้นตอน
-
ทำความเข้าใจกับชุดตัวละคร
Base64 ใช้ 64 ตัวอักษร: A-Z (26), a-z (26), 0-9 (10), + และ / (2) อักขระ = ใช้สำหรับการเติมเมื่อความยาวอินพุตไม่เป็นทวีคูณของ 3 รูปแบบ URL-safe จะแทนที่ + ด้วย - และ / ด้วย _ และละเว้นการเติม
-
เรียนรู้วิธีการทำงานของการเข้ารหัส
Base64 ประมวลผลอินพุตในบล็อก 3 ไบต์ (24 บิต) แต่ละบล็อก 24 บิตจะถูกแบ่งออกเป็นสี่กลุ่ม 6 บิต ค่า 6 บิต (0-63) แต่ละค่าจะจับคู่กับอักขระตัวใดตัวหนึ่งใน 64 ตัว หากอินพุตไม่เป็นทวีคูณของ 3 ช่องว่างภายใน (=) จะถูกเพิ่ม: อินพุต 1 ไบต์ → 2 Base64 อักขระ + ==, 2 ไบต์ → 3 ตัวอักษร + =
-
ทำความเข้าใจกับขนาดค่าใช้จ่าย
Base64 เพิ่มขนาดข้อมูลประมาณ 33% - ทุกๆ 3 ไบต์จะกลายเป็น 4 อักขระ ไฟล์ขนาด 1 MB จะกลายเป็น ~1.33 MB เมื่อเข้ารหัส Base64 ค่าใช้จ่ายนี้เป็นการแลกเปลี่ยนสำหรับความเข้ากันได้แบบข้อความเท่านั้น
-
แยกแยะการเข้ารหัสจากการเข้ารหัส
Base64 กำลังเข้ารหัส ไม่ใช่การเข้ารหัส สามารถย้อนกลับได้โดยไม่ต้องใช้กุญแจ ใครๆ ก็สามารถถอดรหัสได้ Base64 ไม่มีการรักษาความลับ มันจะแปลงไบนารีเป็นข้อความเพื่อการขนส่งเท่านั้น ห้ามใช้ Base64 เพื่อจัดเก็บรหัสผ่านหรือความลับ
ตัวอย่าง
เข้ารหัสข้อความ
ป้อนข้อมูล: Hello, World!
เอาท์พุต: SGVsbG8sIFdvcmxkIQ==
เข้ารหัสข้อมูลไบนารี (แสดงเป็นเลขฐานสิบหก)
ป้อนข้อมูล: ไบต์: 0x00 0x01 0x02
เอาท์พุต: AAEC
URL-ปลอดภัย Base64 (สไตล์ JWT)
ป้อนข้อมูล: Standard: SGVsbG8= → URL-safe: SGVsbG8 (no padding, - and _ for + and /)
เอาท์พุต: ใช้ในโทเค็น JWT และพารามิเตอร์ URL
ปัญหาทั่วไป
- การปฏิบัติต่อ Base64 เหมือนกับการเข้ารหัส —Base64 สามารถย้อนกลับได้โดยไม่ต้องใช้กุญแจ ใครๆ ก็สามารถถอดรหัสได้ อย่าใช้มันเพื่อปกป้องข้อมูลที่ละเอียดอ่อน
- อักขระที่ไม่ใช่ ASCII —ไร้เดียงสา btoa() พ่นบน Unicode ใช้ TextEncoder + btoa(unescape(encodeURIComponent(text))) หรือเครื่องมือที่รับรู้ UTF-8
- การลบช่องว่างภายใน —the = padding เป็นส่วนหนึ่งของการเข้ารหัส การนำออกจะเป็นการหยุดการถอดรหัส (แม้ว่าตัวถอดรหัสบางตัวจะสามารถสร้างมันขึ้นมาใหม่ได้ก็ตาม)
- ค่าใช้จ่ายด้านขนาด —Base64 เพิ่ม ~33% ให้กับขนาดข้อมูล สำหรับไฟล์ขนาดใหญ่ นี่เป็นสิ่งสำคัญ พิจารณาว่าจำเป็นต้องมีการเข้ารหัสหรือไม่
เคล็ดลับ
- ใช้ Base64 สำหรับข้อมูล URLs เพื่อฝังรูปภาพขนาดเล็กใน HTML/CSS โดยไม่ต้องขอ HTTP แยกต่างหาก
- ใช้ URL-safe Base64 (แทนที่ + ด้วย -, / ด้วย _, การขยายแถบ) สำหรับโทเค็น URLs และ JWT
- Base64 ไม่ใช่การเข้ารหัส — ใช้เพื่อความเข้ากันได้ในการขนส่ง ไม่ใช่เพื่อรักษาความลับ
- ใช้ Base64 ตัวเข้ารหัสและตัวถอดรหัสของเราเพื่อการแปลงแบบส่วนตัวทันทีในเบราว์เซอร์ของคุณ