Base45 คืออะไร? เจาะลึก Encoding เบื้องหลัง QR Code ของ EU Green Pass พร้อมวิธี Encode/Decode ง่าย ๆ
รู้จัก Base45 (RFC 9285) encoding ที่ถูกเลือกใช้ใน EU Digital COVID Certificate พร้อมคู่มือใช้งาน Base45 Converter สำหรับ encode และ decode ข้อมูลใน browser ฟรี ไม่ต้องติดตั้งอะไรเพิ่ม
Table of Contents
ถ้าคุณเคยสแกน QR code บนใบรับรองวัคซีนหรือผลตรวจโควิดของสหภาพยุโรป (EU Digital COVID Certificate หรือที่หลายคนเรียกว่า Green Pass) แล้วสงสัยว่าข้อมูลข้างในถูก encode ด้วยอะไร คำตอบคือ Base45 — รูปแบบการเข้ารหัสข้อมูลตามมาตรฐาน RFC 9285 ที่ออกแบบมาเพื่อให้ "ยัดข้อมูลลง QR code ได้แน่นที่สุด" โดยยังอ่านง่ายและตรวจสอบได้ด้วยตาเปล่า Base45 ไม่ใช่ของใหม่ที่ถูกคิดขึ้นมาเพื่อ Green Pass โดยเฉพาะ แต่เป็น encoding เก่าแก่ที่ถูกปัดฝุ่นกลับมาเพราะมันเข้ากับ QR code alphanumeric mode ได้อย่างลงตัว
ในบทความนี้ เราจะพาคุณเข้าใจว่า Base45 ทำงานอย่างไร ทำไมมันถึงถูกเลือกใช้ในเอกสารราชการของ EU และวิธีใช้งาน Base45 Converter เครื่องมือฟรีบนเว็บไซต์ของเราที่ให้คุณ encode และ decode ข้อมูลแบบ instant ได้ทันทีใน browser โดยไม่ต้องติดตั้งโปรแกรมใด ๆ
ทำไมต้องใช้ Base45?
การเลือก encoding สักตัวสำหรับงานระดับทวีปไม่ใช่เรื่องบังเอิญ Base45 ชนะใจทีมออกแบบ EU DCC ด้วยเหตุผลเหล่านี้
- QR code มีพื้นที่จำกัด — QR code ยิ่งจุข้อมูลมากยิ่งหนาแน่นและสแกนยาก Base45 ช่วยบีบข้อมูลให้อยู่ในชุดตัวอักษรที่ QR code จัดเก็บได้อย่างมีประสิทธิภาพสูงสุด ทำให้ QR code ของ Green Pass ยังสแกนได้ง่ายแม้พิมพ์บนกระดาษ
- จับคู่กับ QR alphanumeric mode ได้พอดี — QR alphanumeric mode รองรับตัวอักษร 45 ตัวพอดี และเก็บ 2 ตัวอักษรใน 11 bits (เฉลี่ย 5.5 bits ต่อตัวอักษร) ซึ่งประหยัดกว่า byte mode ที่ใช้ 8 bits ต่อตัวอักษร Base45 ถูกออกแบบมาให้ alphabet ตรงกับชุดตัวอักษรของ QR alphanumeric mode ทุกตัว
- เป็นมาตรฐานเปิดที่ใครก็ implement ได้ — RFC 9285 กำหนด alphabet และกฎการ encode/decode ไว้อย่างชัดเจน ทำให้ระบบของทุกประเทศใน EU ทำงานร่วมกันได้ (interoperability) โดยไม่พึ่ง vendor ใด vendor หนึ่ง
- ปลอดภัยต่อการส่งผ่านหลายช่องทาง — ตัวอักษรใน Base45 ไม่มีอักขระพิเศษที่สร้างปัญหาใน URL, email หรือระบบ legacy ที่จัดการอักขระบางตัวไม่ดี
- ตรวจสอบได้ด้วยตาเปล่า — เพราะผลลัพธ์เป็นตัวอักษรที่อ่านได้ Developer สามารถดู payload แล้วจับผิดเบื้องต้นได้ทันทีว่าข้อมูลหน้าตาถูกต้องหรือไม่
- Reverse ได้ ไม่ใช่ encryption — Base45 เป็น encoding ล้วน ๆ ไม่ใช่ hashing หรือการเข้ารหัสลับ ใครก็ตามที่มี payload สามารถ decode กลับเป็นข้อมูลต้นฉบับได้ ความปลอดภัยของ Green Pass จึงอยู่ที่ชั้นการ sign (COSE) ไม่ใช่ชั้น Base45
ฟีเจอร์เด่น
ตารางสรุปความสามารถของ Base45 Converter ของเรา
| ฟีเจอร์ | รายละเอียด |
|---|---|
| สลับโหมด Encode/Decode | สลับทิศทางได้ทันทีในหน้าเดียว ไม่ต้องเปลี่ยนเครื่องมือ |
| รองรับ UTF-8 | encode ข้อความภาษาไทย อีโมจิ และอักขระสากลได้ถูกต้อง |
| แปลงแบบ Instant | ผลลัพธ์อัปเดตทันทีที่พิมพ์ ไม่ต้องกดปุ่ม Convert |
| Error message ชัดเจน | แจ้งตรง ๆ เมื่อเจอตัวอักษรนอก alphabet หรือ chunk length ไม่ถูกต้อง |
| ทำงาน 100% ใน browser | ทุกอย่างประมวลผลแบบ client-side ไม่มีการ upload ข้อมูลไป server |
| ฟรี ไม่มีเงื่อนไข | ใช้ได้ไม่จำกัด ไม่ต้องสมัครสมาชิก ไม่ต้องเสียเงิน |
- ความเป็นส่วนตัวมาก่อน — เพราะเครื่องมือทำงานทั้งหมดใน browser ของคุณ ข้อมูลที่ paste เข้าไปไม่เคยเดินทางออกจากเครื่อง เหมาะมากสำหรับ payload ที่มีข้อมูลอ่อนไหว
- เหมาะกับ workflow เร็ว ๆ — การแปลงแบบ instant ทำให้การ debug ทำได้เป็นรอบสั้น ๆ: paste → ดูผล → แก้ → paste ใหม่ โดยไม่เสียจังหวะ
- error ที่บอกสาเหตุจริง — แทนที่จะเงียบหรือให้ผลลัพธ์มั่ว ๆ เครื่องมือจะบอกว่าคุณภาพผิดตรงไหน เช่น เจอตัวอักษร # ซึ่งไม่อยู่ใน Base45 alphabet หรือข้อความที่ decode มีความยาว chunk ผิดกฎของ RFC 9285
วิธีใช้งาน Base45 Converter
เริ่มใช้งานได้ในไม่ถึงหนึ่งนาที ตามขั้นตอนต่อไปนี้
- เปิดเครื่องมือ — เข้าไปที่ Base45 Converter บนเว็บไซต์ของเรา ใช้ได้ทั้งบน desktop และมือถือ
- เลือกโหมด — กดสลับระหว่าง Encode (แปลงข้อความเป็น Base45) หรือ Decode (แปลง Base45 กลับเป็นข้อความ)
- ป้อนข้อมูล — ในโหมด Encode ให้พิมพ์หรือ paste ข้อความที่ต้องการ (รองรับ UTF-8 เต็มรูปแบบ) ในโหมด Decode ให้ paste ข้อความ Base45 ที่ต้องการถอดรหัส
- ดูผลลัพธ์แบบ instant — ผลลัพธ์ปรากฏทันทีขณะที่คุณพิมพ์ พร้อม error message ชัดเจนถ้าข้อมูลไม่ถูกต้องตามกฎ RFC 9285
- Copy ผลลัพธ์ไปใช้ — กด copy ผลลัพธ์เพื่อนำไปวางใน QR code generator, โค้ดทดสอบ หรือ log ของระบบได้เลย
Base45 ทำงานอย่างไร
มาถึงส่วน deep dive กันบ้าง กลไกของ Base45 นั้นเรียบง่ายแต่ฉลาด
Alphabet 45 ตัว — RFC 9285 กำหนดชุดตัวอักษร 45 ตัวเรียงตามลำดับดังนี้
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:
สังเกตว่า ช่องว่าง (space) เป็นส่วนหนึ่งของ alphabet อย่างทางการ ดังนั้นถ้าคุณเห็นช่องว่างโผล่ในผลลัพธ์ Base45 นั่นไม่ใช่ความผิดพลาด แต่เป็นข้อมูลจริง ตัวอย่างเช่น Hello!! เมื่อ encode แล้วจะได้ %69 VD92EX0 ซึ่งมีช่องว่างคั่นอยู่ตรงกลาง
กฎการ encode: 2 bytes กลายเป็น 3 ตัวอักษร — ข้อมูลถูกอ่านทีละ chunk ขนาด 2 bytes (16 bits) แต่ละ chunk มีค่าได้ตั้งแต่ 0 ถึง 65,535 จากนั้นแปลงเป็นเลขฐาน 45 ใช้ 3 หลัก เพราะ 45³ = 91,125 ซึ่งมากกว่า 65,536 พอดี ถ้า byte สุดท้ายเหลือเดี่ยว ๆ (ข้อมูลความยาวคี่) จะถูก encode เป็น 2 ตัวอักษร เพราะ 45² = 2,025 ซึ่งมากกว่า 256 พอดีเช่นกัน
ตัวอย่างทางการจาก RFC 9285 — test vector ที่ดังที่สุดคือ AB → BB8 โดย A (0x41) และ B (0x42) รวมกันเป็นค่า 0x4142 = 16,706 เมื่อนำ 16,706 มาแยกเป็นเลขฐาน 45 จะได้หลัก [8, 11, 11] ซึ่งตรงกับตัวอักษร B, B, 8 ใน alphabet (เรียงจากหลักสูงไปต่ำ) จึงได้ผลลัพธ์เป็น BB8 ตัวอย่างอื่น ๆ ที่ใช้ทดสอบได้:
| ข้อมูลเข้า | ผลลัพธ์ Base45 |
|---|---|
| AB | BB8 |
| QR | SCA |
| Base45 | SH8LQE0R6 |
| Hello!! | %69 VD92EX0 |
ทำไม QR alphanumeric mode ถึงเกิดมาคู่กับ Base45 — QR code มีโหมดการเก็บข้อมูลหลายโหมด โดยโหมด alphanumeric รองรับตัวอักษร exactly 45 ตัว ได้แก่ 0-9, A-Z, space และ $ % * + - . / : — ซึ่งก็คือ Base45 alphabet ทั้งชุด! ในโหมดนี้ QR code เก็บตัวอักษร 2 ตัวใน 11 bits (เพราะ 45 × 45 = 2,025 ≤ 2,048 = 2¹¹) เทียบกับ byte mode ที่ต้องใช้เวลา 8 bits ต่อ 1 ตัวอักษร ดังนั้นการ encode ข้อมูลเป็น Base45 ก่อนยัดลง QR code จึงประหยัดพื้นที่ได้ราว 30% เมื่อเทียบกับการเก็บเป็น bytes ตรง ๆ นี่คือเหตุผลหลักที่ Base45 ถูกเลือกใช้ใน EU Digital COVID Certificate
Use Cases ในทางปฏิบัติ
EU Digital COVID Certificate (Green Pass)
use case ที่ใหญ่ที่สุดของ Base45 ในประวัติศาสตร์คือ EU DCC ซึ่งออกให้ประชาชนหลายร้อยล้านคนในช่วงการระบาด Pipeline เต็ม ๆ ของ Green Pass คือ: ข้อมูลใบรับรองถูกจัดโครงสร้างเป็น CBOR → zlib compress เพื่อลดขนาด → COSE sign เพื่อป้องกันการปลอมแปลง → Base45 encode เพื่อเตรียมลง QR code → สร้าง QR code สุดท้าย เมื่อสแกน แอปจะ decode Base45 → ตรวจสอบ signature → decompress → อ่าน CBOR ตามลำดับย้อนกลับ
ตรวจสอบและ debug QR payload
ถ้าคุณเป็น developer ที่ต้องดูแลระบบเกี่ยวกับ DCC หรือ QR payload อื่น ๆ ที่ใช้ Base45 การมีเครื่องมือ decode เร็ว ๆ ช่วยได้มาก เช่น สแกน QR แล้วได้ payload แปลก ๆ ก็นำมา decode ดูหน้าตาก่อนได้ว่าโครงสร้างถูกต้องไหม หรือเมื่อ generate payload เอง ก็ encode แล้วลอง decode กลับเพื่อตรวจสอบ round-trip ว่าข้อมูลไม่หาย
ส่งข้อมูลแบบ compact ผ่านช่องทางจำกัด
Base45 เหมาะกับสถานการณ์ที่ต้องส่งข้อมูลไบนารีผ่านช่องทางที่รับแต่ข้อความตัวอักษร และต้องการประสิทธิภาพสูงกว่า Base64 ในบริบท QR code เช่น การฝังข้อมูลเล็ก ๆ ใน QR code บนบัตรสมาชิก ป้ายสินค้า หรือตั๋วงานอีเวนต์ ที่ทุก bit มีค่า
ทดสอบ CBOR pipeline
สำหรับทีมที่สร้างระบบคล้าย EU DCC คุณสามารถใช้ Base45 Converter ทดสอบแต่ละขั้นของ pipeline แยกกันได้ เช่น encode ผลลัพธ์จากขั้นตอน COSE sign เพื่อดูว่า payload สุดท้ายหน้าตาเป็นอย่างไร หรือ decode payload ตัวอย่างจาก spec แล้วส่งต่อเข้า CBOR decoder เพื่อเช็คว่าโครงสร้างภายในถูกต้อง
Best Practices
- อย่าจำสับสนระหว่าง encoding กับ encryption — Base45 ไม่ได้ปกป้องความลับใด ๆ ทั้งสิ้น อย่าวางข้อมูลอ่อนไหวใน payload โดยคิดว่า Base45 ช่วยซ่อนข้อมูล มันแค่เปลี่ยนรูปแบบ ไม่ใช่กุญแจล็อก
- อย่าลืมว่า space เป็นตัวอักษรที่ถูกต้อง — เมื่อเห็นช่องว่างในผลลัพธ์ Base45 อย่าเผลอ trim ทิ้ง เพราะจะทำให้ decode พลาดหรือได้ข้อมูลผิด
- ระวัง chunk length ตอน decode — ตามกฎ RFC 9285 ข้อความ Base45 ที่ถูกต้องห้ามมีความยาวที่หารแล้วเหลือเศษ 1 (เพราะ 2 bytes → 3 ตัวอักษร และ 1 byte → 2 ตัวอักษร) ถ้าเจอ error เรื่อง chunk length ให้เช็คว่า payload ไม่ได้ถูกตัดหรือเติมตัวอักษรเกิน
- ใช้ UTF-8 ให้สอดคล้องกันทั้งสองฝั่ง — ฝั่ง encode และ decode ต้องตกลง encoding ของข้อความตรงกัน เครื่องมือของเราใช้ UTF-8 เป็นค่าเริ่มต้น ถ้าระบบของคุณใช้ charset อื่น ผลลัพธ์อาจไม่ตรงกัน
- ทดสอบด้วย test vector ทางการก่อนเสมอ — เมื่อ implement Base45 เอง ลองเช็คว่า AB → BB8 และ Hello!! → %69 VD92EX0 ผ่านก่อนนำไปใช้จริง จะช่วยจับ bug เรื่องลำดับหลัก (endianness) ได้เร็ว
- จำลำดับ pipeline ของ EU DCC ให้แม่น — Base45 เป็นแค่ชั้นนอกสุด ข้อมูลข้างในถูก compress และ sign มาก่อนแล้วเสมอ ถ้า decode Base45 แล้วได้ข้อมูลที่ยังอ่านไม่ออก นั่นเป็นเรื่องปกติ เพราะต้อง decompress และ parse CBOR ต่อ
เริ่มใช้ Base45 Converter เลยตอนนี้
ไม่ว่าคุณกำลัง debug QR payload ของ Green Pass ทดสอบ implementation ตาม RFC 9285 หรือแค่อยากรู้ว่าข้อความของคุณหน้าตาเป็นอย่างไรเมื่อกลายเป็น Base45 เครื่องมือของเราพร้อมให้ใช้ทันที — ฟรี ทำงานทั้งหมดใน browser ไม่มีการ upload ข้อมูล และรองรับทั้ง encode/decode แบบ instant
👉 เปิด Base45 Converter แล้วลองพิมพ์ AB ดู — ถ้าคุณได้ BB8 แสดงว่าคุณกำลังใช้คุยภาษาเดียวกับ RFC 9285 อยู่
เครื่องมือที่เกี่ยวข้อง
ขอให้สนุกกับการเข้ารหัส!