Natthanan2002

Follow me on GitHub

Base64 คืออะไร?

BASE64 (เบส 64) คือ วิธีการเข้ารหัสข้อมูลรูปแบบหนึ่ง ที่จะเปลี่ยนข้อความ หรือข้อมูลต้นฉบับไปเป็นข้อความ หรือข้อมูลชุดใหม่ ที่ไม่สามารถอ่าน หรือรู้ว่าข้อมูลชุดนี้คืออะไร ซึ่งการเข้ารหัสชนิดนี้จะแทนที่ข้อมูลด้วยตัวอักษร 64 ตัว นั่นคือที่มาของ BASE64 ตามตัวอย่างต่อไปนี้

  • Table ASCII - Binary Character (เทเบิ้ล แอสกี้ ไบนารี่ ชาเรคเจอร์) image

  • Table BASE64 (เทเบิ้ลเบส 64) image


วิธีการเข้ารหัส BASE64

ตัวอย่าง

  • ต้องการเข้ารหัสข้อความนี้ “mind” จะมีขั้นตอนคือ
    1. นําข้อมูลที่ต้องการเข้ารหัสมาแปลงเป็นเลขฐานสอง 8 bit ดูตามตาราง Table ASCII - Binary Character

m = 01101101 i = 01101001 m = 01101101 d = 01100100 01101101 01101001 01101101 01100100”

  1. จากนั้น เรียงบิตใหม่จากทางด้านซ้าย แบ่งเลขฐานสองออกเป็นชุด ชุดละ 6 bit กรณีที่ชุดสุดท้ายไม่ครบ ให้เติม 0 ไปจนครบ จะได้ดังนี้

011011 010110 100101 101101 011001 000000

** bit ที่ถูกเติมเข้าไปที่เป็น 00 แทนด้วย “=” กรณี bit สุดท้าย เป็น 000000 ก็จะได้ == สองตัวต่อ

  1. แปลงเลขฐาน 2 แบบ 6 bit เป็นเลขฐาน 10 จำนวนบิต จะเริ่มจากขวาไปซ้าย สูตรการคำนวณบิต n^2
  • เมื่อนำไปเปรียบเทียบกับตาราง Table BASE64 จะได้ดังนี้

    bWltZA==


วิธีการถอดรหัส BASE64

  • วิธีการถอดรหัส BASE64 ทําย้อนกลับครับให้นําข้อมูลมาแปลงเป็นฐานสอง 6 bit มาเรียงต่อกันก่อน แล้วนํามาจัดกลุ่ม กลุ่มละ 8 bit โดย bit สุดท้ายที่เหลือไม่ครบ 8 bit ให้ตัดทิ้ง หลังจากนั้นก็แปลงเลขฐานสอง 8 bit แต่ละชุดเป็นข้อมูล ASCII เท่านี้ก็จะได้ข้อมูลต้นฉบับแล้ว

  • สำหรับ Base64 ใน PHP เป็นวิธีเข้ารหัสข้อมูลบิตเป็นรูปแบบข้อความ ASCII ใช้ฟังก์ชัน base64_encode() ในการเข้ารหัสข้อมูลบิตเป็นสตริงรูปแบบ base64 ข้อมูลที่เข้ารหัสนี้สามารถใช้ส่งข้อมูลบิตอย่างปลอดภัยผ่านเครือข่าย หรือในการจัดเก็บข้อมูลบิตในฐานข้อมูลหรือระบบไฟล์ที่เป็นข้อความ ใช้ฟังก์ชัน base64_decode() ในการถอดรหัสข้อมูลเป็นข้อมูลบิตเดิม หนึ่งในเหตุการณ์ที่นิยมใช้ base64 encoding ใน PHP คือในการเข้ารหัสรูปภาพที่ผู้ใช้อัปโหลดเข้าฐานข้อมูล

ขอบคุณข้อมูลจาก: https://www.mindphp.com/developer/80-php-security/4082-encoding-decoding-base64.html