บทความทั้งหมด

Base32: ต่างจาก Base64 อย่างไรและสะดวกกว่าเมื่อไหร่

Base32 มีไว้เพื่อแก้ปัญหาเดียวโดยเฉพาะ: เมื่อต้องอ่านรหัสออกเสียง บอกทางโทรศัพท์ หรือคัดลอกด้วยมือ ชุดตัวอักษรเพียง 32 ตัวย่อมผิดพลาดน้อยกว่าชุด 64 ตัวของ Base64 มาก

สถานการณ์คลาสสิก — ตั้งค่า 2FA ตอนสแกน QR ไม่ได้

เมื่อแอปอย่าง Google Authenticator สแกนคิวอาร์โค้ดไม่ได้ แอปจะแสดง "คีย์ตั้งค่า" ให้พิมพ์เองแทน — คีย์นี้เข้ารหัสด้วย Base32 ไม่ใช่ Base64 มาตรฐาน TOTP กำหนดไว้แบบนี้โดยเฉพาะ เพราะรูปแบบนี้ถูกออกแบบมาให้คัดลอกซ้ำได้อย่างแม่นยำ แม้จะต้องอ่านทีละตัวอักษรผ่านสายโทรศัพท์

ตัวอักษรไทยไม่มีปัญหาเรื่องตัวพิมพ์เล็ก-ใหญ่อยู่แล้ว แต่ Base32 ยังช่วยได้อีกชั้น

อักษรไทยไม่มีแนวคิดเรื่องตัวพิมพ์ใหญ่-เล็กเลย ดังนั้นการที่ Base32 ไม่สนใจตัวพิมพ์เล็กใหญ่จึงรู้สึกเป็นธรรมชาติสำหรับผู้ใช้ไทยอยู่แล้ว แต่ Base32 ยังไปไกลกว่านั้นด้วยการตัดตัวเลข 0, 1, 8, 9 และตัวอักษร O, I, L ออกทั้งหมด ซึ่งเป็นตัวที่สับสนง่ายที่สุดเมื่ออ่านออกเสียงผ่านโทรศัพท์หรือมองบนหน้าจอความละเอียดต่ำ — ปัญหาที่พบบ่อยเวลาบอกรหัสภาษาอังกฤษปนตัวเลขทางโทรศัพท์

ที่ที่พบ Base32 ในการใช้งานจริง

  • ที่อยู่ .onion ของเครือข่าย Tor — โดเมนย่อย 56 ตัวอักษรคือกุญแจสาธารณะ Ed25519 ที่เข้ารหัสด้วย Base32
  • ป้าย DNS และโดเมนย่อย ซึ่งไม่แยกตัวพิมพ์เล็กใหญ่ตามข้อกำหนดของโปรโตคอล
  • รหัสแนะนำเพื่อนหรือคูปองที่พิมพ์บนใบเสร็จกระดาษ ซึ่งลูกค้าต้องพิมพ์กลับเข้าเว็บไซต์ด้วยมือ

ราคาที่ต้องจ่ายเพื่อความอ่านง่าย — สตริงยาวขึ้น

ชุดตัวอักษรที่เล็กลงหมายความว่าแต่ละไบต์ต้องใช้ตัวอักษรมากขึ้นในการแทนค่า — ผลลัพธ์ยาวกว่า Base64 ประมาณ 60% สำหรับคีย์ลับ 20 ไบต์ ความต่างนี้แทบไม่มีนัยสำคัญ แต่สำหรับไฟล์ขนาดหลายเมกะไบต์ Base32 ไม่ใช่ทางเลือกที่เหมาะสมเมื่อเทียบกับ Base64

Base32 กับ Base32hex ใช้แทนกันไม่ได้

RFC 4648 ยังนิยาม Base32hex ซึ่งใช้ชุดตัวอักษร 0–9A–V แทน A–Z2–7 และรักษาลำดับการเรียงของสตริงให้ตรงกับลำดับของไบต์ต้นฉบับ — คุณสมบัติที่สำคัญสำหรับฐานข้อมูลบางประเภท สตริงที่เข้ารหัสด้วยรูปแบบหนึ่งจะถอดรหัสด้วยอีกรูปแบบไม่ถูกต้อง จึงควรตรวจสอบก่อนว่าระบบที่ใช้งานอยู่ต้องการรูปแบบใดกันแน่

ลองใช้เครื่องมือ