base64 เป็นวิธีแปลง(encode/decode)ข้อมูลครับ ไม่ใช่การ encrypt/decrypt เลยทำให้ผมพอเดาได้ ตาม code ที่เขียน ปรกติ base64 จะใช้สำหรับแปลงข้อมูลที่เป็น binary หรือข้อมูลที่มีตัวอักษรพิเศษ ไปเป็นข้อมูลที่เป็น text 64 ตัว เป็นที่มาของชื่อ base64 คือหนึ่งหลักมีเลขอยู่ 64 ตัว ปรกติก็จะประกอบไปด้วย 0-9 (10 ตัว) A-Z (26 ตัว) a-z (26 ตัว) รวมเป็น 62 ตัวบวกกับ symbol อีกสองตัว จะสังเกตได้ว่า ถ้าเลือก symbol ดีๆ ผลลัพธ์ของ base64 จะไปใช้ทำอะไรได้หลายอย่างโดยไม่มีปัญหา เช่น ส่งไปทาง mail ด้วย smtp protocol (ซึ่งมันจะรับแค่ 7 bits) ใส่ลงไปใน database โดยใช้ sql statement ทำเป็น parameter ส่งไปทาง url แบบ get method เป็นต้น
การแปลงข้อมูล(encode)ไปเป็น base64 มีหลักอยู่ว่า ข้อมูลปลายทางแต่ละหลัก(ตัว)มีความเป็นไปได้ 64 ตัวอักษร 64 คือ 2 ยกกำลัง 6 ดังนั้นเราต้องการข้อมูลต้นทางแค่ 6 bits สำหรับข้อมูลปลายทางแต่ละตัว(8 bits) พูดง่ายๆคือ เอาข้อมูลต้นทางมาทีละ 6 bits convert เป็นข้อมูลปลายทาง 8 bits ตอนทำกลับ(decode)ก็เอาข้อมูลมาทีละตัว(8 bits) แล้ว convert เป็น 6 bits ใส่กลับไปเป็นผลลัพธ์ ความยากก็อยู่ตรง 6 bits 8 bits นี่แหละครับ
สรุปว่า base64 ใช้สำหรับแปลงข้อมูล ไม่ใช่การ encrypt ถึงแม้ว่าดูเหมือนแปลงไปแล้วจะดูไม่รู้เรื่องก็ตาม

ไม่มีความคิดเห็น:
แสดงความคิดเห็น