เครื่องมือ
TH

การเข้ารหัส Base64 คืออะไร?

Base64 คือวิธีเขียนข้อมูลไบนารีใด ๆ โดยใช้อักขระที่พิมพ์ได้เพียง 64 ตัว มาดูกันว่าทำงานอย่างไร มีไว้เพื่ออะไร และเมื่อใดที่ควร (และไม่ควร) ใช้

Base64 ในประโยคเดียว

Base64 คือการเข้ารหัสข้อมูลไบนารีเป็นข้อความตามมาตรฐาน RFC 4648 ซึ่งแทนข้อมูลทุก 3 ไบต์ด้วยอักขระ 4 ตัวจากชุดตัวอักษร A–Z, a–z, 0–9, + และ /

ทำไมต้องมี Base64

ระบบจำนวนมากถูกออกแบบมาให้รองรับเฉพาะข้อความ เช่น อีเมล (SMTP), JSON, XML, แอตทริบิวต์ HTML, URL และเทอร์มินัล ข้อมูลไบนารีดิบอย่างรูปภาพหรือ PDF อาจมีไบต์ที่ระบบเหล่านี้เปลี่ยนแปลงหรือปฏิเสธ Base64 จึงแปลงข้อมูลให้เป็นอักขระที่พิมพ์ได้และปลอดภัย เพื่อให้ข้อมูลไปถึงปลายทางโดยไม่ถูกเปลี่ยนแปลง

การเข้ารหัส Base64 ทำงานอย่างไร ทีละขั้นตอน

  1. นำไบต์ของข้อมูลเข้า: M, a, n = 77, 97, 110
  2. เขียนเป็น 24 บิต: 01001101 01100001 01101110
  3. แบ่งบิตออกเป็น 4 กลุ่ม กลุ่มละ 6 บิต: 010011 010110 000101 101110 = 19, 22, 5, 46
  4. เทียบตัวเลขแต่ละตัวกับชุดตัวอักษร: 19 = T, 22 = W, 5 = F, 46 = u

ดังนั้น Man จึงกลายเป็น TWFu ส่วนการถอดรหัสก็เพียงทำขั้นตอนเหล่านี้ย้อนกลับ

ชุดตัวอักษรของ Base64

ค่าอักขระ
0–25A–Z
26–51a–z
52–610–9
62+ (แบบปลอดภัยสำหรับ URL: -)
63/ (แบบปลอดภัยสำหรับ URL: _)
ตัวเติม (padding)=

เครื่องหมาย = (padding) หมายถึงอะไร

เมื่อความยาวของข้อมูลเข้าไม่ใช่ผลคูณของ 3 กลุ่มสุดท้ายจะถูกเติมให้ครบและทำเครื่องหมายด้วย = เช่น Ma กลายเป็น TWE= และ M กลายเป็น TQ== ในสตริงที่ถูกต้อง padding จะไม่ปรากฏอยู่ตรงกลางสตริงเลย

รูปแบบต่าง ๆ ของ Base64

Base64 ไม่ใช่การเข้ารหัสลับ

Base64 ไม่ได้ซ่อนอะไรเลย ใครก็ถอดรหัสได้ในทันที หลายคนเข้าใจผิดว่าเป็นการป้องกันข้อมูลเพราะผลลัพธ์ดูเหมือนตัวอักษรสุ่ม สำหรับข้อมูลลับให้ใช้การเข้ารหัสลับจริง ๆ เช่น AES และใช้ Base64 เพียงเพื่อส่งไบต์ที่เข้ารหัสลับแล้วในรูปข้อความเท่านั้น

ขนาดที่เพิ่มขึ้น

ความยาวหลังเข้ารหัสคือ 4 × ⌈n / 3⌉ อักขระสำหรับข้อมูล n ไบต์ หรือมากกว่าต้นฉบับประมาณ 33% หากขึ้นบรรทัดแบบ MIME จะเพิ่มขึ้นอีก 2–3%

Base64 ใช้ที่ไหนบ้าง

คำถามที่พบบ่อย

Base64 เหมือนกับการเข้ารหัสลับหรือการแฮชหรือไม่?

ไม่เหมือน การเข้ารหัสลับต้องใช้คีย์จึงจะย้อนกลับได้ การแฮชย้อนกลับไม่ได้เลย ส่วน Base64 ใครก็ถอดรหัสได้

ทำไมจึงเรียกว่า Base64?

เพราะใช้ชุดตัวอักษร 64 ตัว อักขระแต่ละตัวจึงเก็บข้อมูลได้ 6 บิต (26 = 64)

จะรู้ได้อย่างไรว่าสตริงเป็น Base64?

สตริงจะมีเฉพาะ A–Z, a–z, 0–9, +, / (หรือ - และ _) ความยาวมักเป็นผลคูณของ 4 และอาจลงท้ายด้วยเครื่องหมาย = หนึ่งหรือสองตัว วิธีทดสอบที่เร็วที่สุดคือวางลงในตัวถอดรหัสของเรา

อัปเดตล่าสุด: