ตัวแปลง Base64 / ถอดรหัส Base64 ออนไลน์
คุณต้องการแปลงข้อความที่อ่านได้เป็นรูปแบบ Base64 เพื่อใช้ในส่วนหัว HTTP หรือถอดรหัสเนื้อหาของโทเค็น API หรือไม่? ตัวเข้ารหัสและถอดรหัสข้อความ Base64 ของเราเป็นเครื่องมือพิเศษสำหรับการทำงานกับสตริงข้อความที่สามารถจัดการกับความซับซ้อน เช่น เครื่องหมายวรรคตอนหรืออักขระพิเศษได้
คุณกำลังทำงานกับรูปภาพอยู่หรือเปล่า?
หากโค้ดของคุณเริ่มต้นด้วยdata:image/png...หรือคุณต้องการแปลงไฟล์เป็นข้อความ เครื่องมือนี้จะแสดงอักขระที่ไม่สมเหตุสมผลเท่านั้น โปรดใช้เครื่องมือเฉพาะของเราสำหรับแปลงเป็นรูปภาพ
รูปแบบ Base64 ทำงานอย่างไร?
หลายคนใช้ Base64 ทุกวัน แต่มีน้อยคนที่จะรู้ว่ามันทำงานอย่างไร มันไม่ใช่เวทมนตร์ แต่เป็นการคำนวณบิตทางคณิตศาสตร์อย่างง่าย
ข้อความทั่วไปในคอมพิวเตอร์จะถูกจัดเก็บเป็น 8 บิต (1 ไบต์) อย่างไรก็ตาม Base64 ใช้อักขระ “ตัวอักษร” 64 ตัว (A-Z, a-z, 0-9, +, /) เนื่องจาก 2^6 = 64 อักขระ Base64 หนึ่งตัวจึงแสดงถึงข้อมูล 6 บิต อย่างแม่นยำ
กระบวนการแปลง (อัลกอริทึม):
- นำอักขระสามตัวจากข้อความของคุณ (3 × 8 บิต = 24 บิต)
- แบ่ง 24 บิตเหล่านี้ออกเป็นสี่กลุ่ม กลุ่มละ 6 บิต
- กำหนดอักขระจากตาราง Base64 ให้แต่ละกลุ่ม
ผลลัพธ์: เนื่องจากเราแปลง 3 อักขระเป็น 4 อักขระ สตริง Base64 ที่ได้จึงมักจะยาวขึ้นประมาณ 33% เสมอเมื่อเทียบกับข้อความต้นฉบับ
ปัญหาชุดอักขระ: ทำไมตัวแปลง Base64 ทั่วไปถึงไม่รองรับอักขระพิเศษ?
หากคุณเคยลองเข้ารหัสคำว่า “Kůň” ในคอนโซลของเบราว์เซอร์โดยใช้ฟังก์ชัน btoa('Kůň') คุณอาจได้รับข้อผิดพลาด: String contains characters outside of the Latin1 range.
Base64 เดิมทีออกแบบมาสำหรับอักขระ ASCII 7 บิต อย่างไรก็ตาม ภาษาไทย อีโมจิ และสัญลักษณ์พิเศษอื่นๆ (UTF-8) ใช้หน่วยความจำหลายไบต์ (multibyte characters)
- ตัวอักษร
a= 1 ไบต์ - ตัวอักษร
ก= 3 ไบต์ - Emoji 🚀 = 4 ไบต์
เครื่องมือของเราแก้ปัญหานี้ได้ ก่อนการเข้ารหัสเป็น Base64 เราจะแปลงข้อความเป็นลำดับไบต์ UTF-8 อย่างถูกต้อง ด้วยเหตุนี้ คุณจึงสามารถเข้ารหัสวัตถุ JSON, ข้อความภาษาไทย และสัญลักษณ์สมัยใหม่ได้อย่างปลอดภัยโดยไม่มีความเสี่ยงต่อข้อมูลเสียหาย
การเข้ารหัสข้อความ Base64 ใช้ที่ไหนบ้าง?
ในขณะที่รูปภาพใน Base64 ส่วนใหญ่ใช้สำหรับฝังใน CSS/HTML แต่ Base64 สำหรับข้อความมีการใช้งานที่แตกต่างกันโดยสิ้นเชิงในระบบแบ็กเอนด์:
1. HTTP Basic Authentication
เมื่อคุณเข้าสู่ระบบ API ส่วนหัวมักจะมีลักษณะดังนี้:
Authorization: Basic dXppdmF0ZWw6aGVzbG8=
เบื้องหลังโค้ดนี้คือชื่อผู้ใช้และรหัสผ่านที่เชื่อมต่อกันในรูปแบบ uživatel:heslo เครื่องมือของเราช่วยให้คุณสร้างหรือตรวจสอบส่วนหัวเหล่านี้ได้อย่างง่ายดาย
2. JSON Web Tokens (JWT)
เว็บแอปพลิเคชันสมัยใหม่ใช้สิ่งที่เรียกว่า JWT สำหรับการเข้าสู่ระบบ โทเค็นดังกล่าวมีลักษณะเป็นสตริงยาวสามสตริงคั่นด้วยจุด ส่วนข้อมูล (Payload) เป็นวัตถุ JSON ธรรมดาที่เข้ารหัสใน Base64
- เคล็ดลับ: ลองวางส่วนกลางของโทเค็น JWT ของคุณที่นี่แล้วถอดรหัส คุณจะเห็นข้อมูลที่แอปพลิเคชันบันทึกเกี่ยวกับคุณอย่างแม่นยำ (เช่น ID ผู้ใช้, วันหมดอายุ)
3. Konfigurační soubory (Kubernetes Secrets)
แพลตฟอร์มเช่น Kubernetes จัดเก็บข้อมูลลับ (Secrets) ในไฟล์คอนฟิกูเรชัน YAML โดยใช้ Base64 นี่ไม่ใช่การเข้ารหัส แต่เป็นวิธีการจัดเก็บข้อมูลไบนารีหรือข้อความที่มีอักขระที่ก่อปัญหา (ขึ้นบรรทัดใหม่, เครื่องหมายอัญประกาศ) ลงในไฟล์ข้อความ
การเข้ารหัส Base64 แบบ “URL Safe” คืออะไร และทำไมถึงสำคัญ?
ชุดตัวอักษร Base64 มาตรฐานมีอักขระ + (บวก) และ / (ทับ) อักขระทั้งสองนี้มีความหมายพิเศษในที่อยู่ URL:
/ใช้คั่นไดเรกทอรี+มักจะถูกตีความว่าเป็นช่องว่าง
หากคุณส่ง Base64 มาตรฐานในพารามิเตอร์ URL (เช่น site.com?token=ab/cd+ef) เซิร์ฟเวอร์อาจอ่านข้อมูลผิดพลาด
วิธีแก้ปัญหา (โหมด URL Safe): สวิตช์ของเราเปิดใช้งานตัวแปร Base64URL (ตาม RFC 4648) ซึ่งทำการเปลี่ยนแปลงเหล่านี้:
+ถูกเปลี่ยนเป็น-(เครื่องหมายขีดกลาง)/ถูกเปลี่ยนเป็น_(เครื่องหมายขีดล่าง)- อักขระ
=(padding) ที่ไม่จำเป็นใน URL จะถูกลบออกในตอนท้าย
ความเชื่อผิดๆ: Base64 ไม่ใช่การเข้ารหัส!
เป็นสิ่งสำคัญที่จะต้องตระหนักถึงความแตกต่างที่สำคัญ ซึ่งผู้เริ่มต้นมักจะสับสน:
- การเข้ารหัส (Encoding - Base64): ใช้สำหรับการถ่ายโอนข้อมูล เหมือนกับการห่อของในกระเป๋าเดินทางเพื่อไม่ให้เสียหายระหว่างทาง ใครก็ตามที่พบกระเป๋าเดินทางสามารถเปิด (ถอดรหัส) และเห็นเนื้อหาได้ ไม่ปลอดภัยสำหรับข้อมูลลับ
- การเข้ารหัสลับ (Encryption - AES, RSA): ล็อกข้อมูลด้วยกุญแจ หากไม่มีกุญแจ คุณจะไม่สามารถเข้าถึงเนื้อหาได้
- การแฮช (Hashing - SHA, MD5): กระบวนการทางเดียว (เช่น สำหรับการจัดเก็บรหัสผ่าน) ไม่สามารถกู้คืนข้อความต้นฉบับจากผลลัพธ์ได้
หากคุณต้องการส่งรหัสผ่านหรือข้อมูลที่ละเอียดอ่อน Base64 เพียงอย่างเดียวไม่เพียงพอ คุณต้องใช้ HTTPS (SSL/TLS) ซึ่งจะเข้ารหัสการถ่ายโอนข้อมูล