โหมดเข้ารหัสกับโหมดถอดรหัสต่างกันอย่างไร
โหมดเข้ารหัสทำหน้าที่แปลงข้อความปกติให้กลายเป็นรหัส Base64 เช่น แปลงคำว่า สวัสดี ให้เป็นรหัสที่ส่งผ่านระบบต่างๆ ที่รับเฉพาะข้อความตัวอักษรได้โดยไม่เพี้ยน ส่วนโหมดถอดรหัสทำหน้าที่ตรงกันข้าม คือรับรหัส Base64 แล้วแปลงกลับเป็นข้อความต้นฉบับ การเลือกโหมดผิดเป็นสาเหตุอันดับหนึ่งของผลลัพธ์ที่ดูเพี้ยน
วิธีจำง่ายๆ คือถามตัวเองว่าสิ่งที่อยู่ในมือตอนนี้คือข้อความธรรมดาหรือรหัส Base64 ถ้าเป็นข้อความธรรมดาและต้องการรหัส ให้เลือกโหมดเข้ารหัส ถ้าได้รหัสมาอยู่แล้วและอยากรู้ว่าข้างในคืออะไร ให้เลือกโหมดถอดรหัส
ข้อควรจำสำคัญ: การเข้ารหัส Base64 เป็นเพียงการแปลงรูปแบบข้อมูล ไม่ใช่การเข้ารหัสเพื่อความปลอดภัย ข้อมูลที่เข้ารหัสแล้วใครก็ถอดกลับได้ในไม่กี่วินาที ห้ามใช้แทนการป้องกันรหัสผ่าน API key หรือข้อมูลลับ
การรองรับภาษาไทยและ UTF-8
เครื่องมือใช้มาตรฐาน UTF-8 ในการแปลงข้อความเป็นข้อมูลก่อนเข้ารหัส Base64 ซึ่งเป็นมาตรฐานสากลที่ระบบสมัยใหม่เกือบทั้งหมดใช้ หมายความว่าข้อความภาษาไทย สระ วรรณยุกต์ และอิโมจิจะถูกแปลงและถอดกลับได้อย่างถูกต้องครบถ้วน
ปัญหาจะเกิดก็ต่อเมื่อรหัส Base64 ที่คุณได้รับมาถูกเข้ารหัสด้วยมาตรฐานอื่น เช่น TIS-620 แบบเก่า กรณีนี้ผลถอดรหัสอาจแสดงเป็นตัวอักษรเพี้ยนๆ วิธีแก้คือขอให้ต้นทางเข้ารหัสใหม่ด้วย UTF-8 หรือใช้เครื่องมือแปลงการเข้ารหัสตัวอักษรก่อนนำมาถอดรหัส
เครื่องหมาย = ท้ายรหัสคืออะไร
เครื่องหมาย = ที่ปรากฏท้ายรหัส Base64 เรียกว่า padding มีหน้าที่เติมให้รหัสมีความยาวเป็นไปตามมาตรฐานการเข้ารหัส อาจมีหนึ่งหรือสองตัว หรือไม่มีเลยก็ได้ขึ้นอยู่กับความยาวของข้อมูลต้นฉบับ ถือเป็นส่วนหนึ่งของรหัสที่ถูกต้องสมบูรณ์
เวลาใช้งานจริงไม่ควรลบเครื่องหมาย = ออกเอง เพราะเครื่องมือถอดรหัสต้องการ padding ที่ครบถ้วนเพื่อแปลงกลับได้อย่างถูกต้อง หากคัดลอกรหัสมาแล้ว = หายไป ให้กลับไปคัดลอกมาใหม่ให้ครบทั้งชุด
ช่องว่างและการขึ้นบรรทัดใหม่ในรหัส
รหัส Base64 ที่ได้จากบางระบบอาจมีการขึ้นบรรทัดใหม่ทุกๆ 76 ตัวอักษรตามมาตรฐานอีเมล MIME ซึ่งเป็นเรื่องปกติและเครื่องมือถอดรหัสส่วนใหญ่จัดการได้ แต่ถ้านำไปใช้ในช่องที่ไม่รับการขึ้นบรรทัด เช่น พารามิเตอร์ URL ควรลบการขึ้นบรรทัดออกก่อน
ข้อควรระวังอีกอย่างคือช่องว่างที่เผลอติดมาตอนคัดลอก โดยเฉพาะช่องว่างท้ายบรรทัดที่มองไม่เห็น หากถอดรหัสแล้วเกิดข้อผิดพลาด ให้ลองลบช่องว่างหัวท้ายออกแล้วลองใหม่อีกครั้ง ปัญหาส่วนใหญ่มักแก้ได้ด้วยวิธีง่ายๆ นี้
สรุปสิ่งที่ต้องจำเกี่ยวกับการตั้งค่า
จำเพียงสามอย่างก็ใช้งานได้ดีแล้ว หนึ่งคือเลือกโหมดให้ตรงกับสิ่งที่อยู่ในมือ สองคือข้อความภาษาไทยใช้ UTF-8 เป็นมาตรฐาน และสามคืออย่าตัดเครื่องหมาย = ท้ายรหัสทิ้ง นอกนั้นเครื่องมือจัดการให้อัตโนมัติทั้งหมด
ถ้าวันไหนผลลัพธ์ผิดปกติ ให้ย้อนกลับมาเช็กสามอย่างนี้ก่อนเสมอ จากประสบการณ์ ปัญหาเกือบทั้งหมดของ Base64 มาจากหนึ่งในสามข้อนี้ ไม่ได้มาจากความซับซ้อนของเทคโนโลยีแต่อย่างใด
คำถามที่พบบ่อย
ต้องตั้งค่าอะไรก่อนใช้เครื่องมือ Base64 หรือไม่
ไม่ต้องตั้งค่าพิเศษ เพียงเลือกโหมดเข้ารหัสหรือถอดรหัสให้ตรงกับงาน เครื่องมือจะจัดการเรื่องการเข้ารหัสตัวอักษร UTF-8 และรูปแบบรหัสมาตรฐานให้อัตโนมัติ
สลับโหมดผิดจะเกิดอะไรขึ้น
ถ้านำข้อความธรรมดาไปถอดรหัส หรือนำรหัส Base64 ไปเข้ารหัสซ้ำ ผลลัพธ์จะออกมาเป็นตัวอักษรที่อ่านไม่รู้เรื่อง ให้สลับโหมดให้ถูกต้องแล้วทำใหม่อีกครั้ง
รหัสที่ไม่มีเครื่องหมาย = ต่อท้ายใช้ได้หรือไม่
รหัส Base64 บางแบบตัด padding ออกโดยตั้งใจ ซึ่งเครื่องมือบางตัวรับได้ แต่เพื่อความชัวร์ควรใช้รหัสที่มี padding ครบตามมาตรฐานเวลาถอดรหัส
ทำไมรหัสจากบางเว็บถอดแล้วเป็นตัวอักษรเพี้ยน
สาเหตุหลักคือต้นทางไม่ได้ใช้ UTF-8 ในการเข้ารหัส หรือรหัสถูกตัดทอนระหว่างคัดลอก ให้ตรวจสอบต้นฉบับและลองคัดลอกมาใหม่อย่างระมัดระวัง