ตัวถอดรหัสและเข้ารหัส Base64
![ตัวถอดรหัสและเข้ารหัส Base64](/media/images/base64_encode_decode.webp)
Base64 คือระบบหมายเลขตำแหน่งที่มีอักขระ ASCII (รหัสมาตรฐานอเมริกันสำหรับการแลกเปลี่ยนข้อมูล) ที่พิมพ์ได้ 64 ตัว ระบบนี้ใช้เพื่อนำเสนอไฟล์ไบนารีในอีเมล เป็นต้น ตัวแปร Base64 ทั้งหมดใช้อักขระ A-Z, a-z และ 0-9, 62 อักขระ อักขระสองตัวที่หายไปจะถูกแทนที่ด้วยอักขระที่แตกต่างกันในระบบการใช้งาน ทุกๆ 3 ไบต์ดั้งเดิมจะถูกเข้ารหัสด้วยอักขระสี่ตัว
ประวัติของ Base64
ในตอนแรก สามารถส่งได้เฉพาะข้อความทางอีเมล (RFC 822) เมื่อเวลาผ่านไปพร้อมกับข้อความ จำเป็นต้องถ่ายโอนไฟล์เสียง วิดีโอและกราฟิก แอปพลิเคชัน ฯลฯ จำเป็นต้องแปลงไฟล์ไบนารีเป็นข้อความ เพิ่ม Base64 ในการเข้ารหัส UUE (Uuencode) ที่มีอยู่ในขณะนั้น ซึ่งใช้ในข้อกำหนด MIME (Multipurpose Internet Mail Extensions) (RFC 2045-2049)
MIME เป็นมาตรฐานสำหรับการอธิบายส่วนหัวในข้อความอิเล็กทรอนิกส์ การใช้งานช่วยให้คุณสามารถส่งไฟล์แนบหลายรายการในจดหมายฉบับเดียว เช่น ไฟล์ที่เก็บถาวรและไฟล์ข้อความหรือหน้า HTML โปรแกรมอีเมลที่รับรู้ MIME จะแยกไฟล์เก็บถาวรออกจากไฟล์ข้อความ แสดงข้อความ และแยกวิเคราะห์แท็ก HTML ได้อย่างอิสระ ตัวอย่างเช่น Outlook Express จะเรียกใช้สคริปต์ที่ฝังอยู่ในหน้า HTML โดยอัตโนมัติ
Base64 ถือกำเนิดในยุคของไบต์เจ็ด หก และสามบิต การเข้ารหัสแบบเก่าไม่รองรับมาตรฐานแบบแปดบิต ด้วยเหตุนี้ ข้อมูลบางส่วนจึงสูญหายเมื่อโอนจากระบบเก่าไปยังระบบใหม่ บ่อยครั้งเมื่อส่งจดหมาย เซิร์ฟเวอร์อีเมลทิ้งส่วนเกิน แปด บิต หรือไม่ส่งวิดีโอและรูปภาพ เพื่อขจัดปัญหาดังกล่าว การเข้ารหัสสำหรับการแปลงรหัสไบนารีเป็นข้อความจึงได้รับการพัฒนา ระบบที่ได้รับความนิยมและมีประสิทธิภาพมากที่สุดคือ Base64 เนื่องจากใช้งานได้ง่ายในทุกที่
อัลกอริทึมที่เรียกว่า "การเข้ารหัสสำหรับการพิมพ์" ได้รับการอธิบายครั้งแรกในปี 1987 Base64 ปรากฏขึ้นในเดือนมิถุนายน 1992 เวอร์ชันของระบบนี้คือ Base16, Base32, Base36, Base58, Base85, Base91 และ Base122 ต่อมามีการใช้มาตรฐานอย่างแข็งขันในด้านไอที
ข้อเท็จจริงที่น่าสนใจ
บางระบบใช้ Base58 เพื่อเข้ารหัส URL ซึ่งแตกต่างจาก Base64 เนื่องจากไม่มีอักขระในข้อความสุดท้ายที่บุคคลสามารถรับรู้ได้อย่างคลุมเครือ ไม่รวม 0 (ศูนย์), O (อักษรละตินตัวพิมพ์ใหญ่ o), I (อักษรตัวพิมพ์ใหญ่ละติน i), l (ละตินตัวเล็ก L) นอกจากนี้ ยังไม่รวมอักขระ + (บวก) และ / (เครื่องหมายทับ) ซึ่งเมื่อเข้ารหัส URL อาจทำให้ตีความที่อยู่ไม่ถูกต้อง
Base64 ให้การเข้ารหัสแบบย้อนกลับและกู้คืนได้ บริการแปลอักขระของตารางรหัสแปดบิตเป็นอักขระที่เก็บรักษาไว้ระหว่างการถ่ายโอนข้อมูลในเครือข่ายและระหว่างอุปกรณ์