วิธีใช้งาน
- เลือก “เข้ารหัส” เพื่อแปลงข้อความเป็น Crockford Base32 หรือ “ถอดรหัส” เพื่อแปลงกลับเป็นข้อความ
- คง “รูปแบบ” ไว้ที่ Crockford และตรวจสอบว่าปิด “แพดดิง” อยู่ เปิด “ตัวพิมพ์เล็ก” หากต้องการเอาต์พุตเป็นตัวพิมพ์เล็ก
- พิมพ์หรือวางอินพุต หรือเปิดไฟล์ เมื่อถอดรหัส ขีดกลางและช่องว่างจะถูกละเว้น
- คัดลอกผลลัพธ์หรือดาวน์โหลดเป็นไฟล์
Crockford Base32 คืออะไร
Douglas Crockford ออกแบบชุดตัวอักษร Base32 นี้สำหรับตัวระบุที่คนต้องอ่าน พิมพ์ และพูดออกเสียง โดยใช้ตัวเลขสิบตัวและตัวอักษรพิมพ์ใหญ่ 22 ตัว ได้แก่ 0123456789ABCDEFGHJKMNPQRSTVWXYZ ตัวอักษร I และ L ถูกตัดออกเพราะดูคล้ายเลข 1 ตัว O ถูกตัดออกเพราะดูคล้าย 0 และตัว U ถูกตัดออกเพื่อลดโอกาสที่จะสะกดเป็นคำหยาบโดยไม่ตั้งใจ
สัญลักษณ์แต่ละตัวเก็บข้อมูล 5 บิต 5 ไบต์จึงกลายเป็น 8 อักขระ เช่นเดียวกับ Base32 ตาม RFC 4648 สัญลักษณ์เรียงตามลำดับ ASCII จากน้อยไปมาก สตริงที่ไม่มีแพดดิงและใช้ตัวพิมพ์แบบเดียวกันจึงเรียงลำดับเหมือนกับข้อมูลที่เข้ารหัสไว้ ข้อกำหนดของ Crockford ไม่ใช้แพดดิง ดังนั้นควรปิดตัวเลือก “แพดดิง” ไว้
การถอดรหัสที่ยืดหยุ่น
ข้อกำหนดของ Crockford ขอให้ตัวถอดรหัสยอมรับสิ่งที่คนพิมพ์จริง ๆ และเครื่องมือนี้ก็ทำเช่นนั้น
- ตัวพิมพ์ใหญ่และตัวพิมพ์เล็กถือว่าเหมือนกัน
- ตัวอักษร O อ่านเป็นเลข 0 และตัวอักษร I กับ L อ่านเป็น 1
- ขีดกลางซึ่งอาจแทรกไว้เพื่อให้อ่านรหัสยาว ๆ ได้ง่ายขึ้นจะถูกละเว้น รวมถึงช่องว่างและการขึ้นบรรทัดใหม่ด้วย
ตัวอักษร U ใช้ไม่ได้ และจะถูกแจ้งพร้อมตำแหน่ง
ไบต์ ตัวเลข และ ULID
Crockford อธิบายการเข้ารหัสของเขาในรูปของตัวเลข ขณะที่เครื่องมือนี้เข้ารหัสลำดับของไบต์เป็นกลุ่มละ 5 บิตตามแนวทางของ RFC 4648 โดยใช้สัญลักษณ์ของ Crockford เมื่อจำนวนบิตไม่เป็นพหุคูณของ 5 การใช้งานแบบอิงตัวเลขจะวางบิตศูนย์ส่วนเกินไว้ด้านหน้า ส่วนเครื่องมือนี้วางไว้ด้านท้าย ผลลัพธ์จึงอาจต่างกัน
ULID เป็นตัวอย่างที่พบบ่อย ULID ใช้ชุดตัวอักษรของ Crockford แต่เข้ารหัสค่า 128 บิตเป็นตัวเลขยาว 26 อักขระ ไบต์ทั้ง 16 ไบต์ของ ULID จึงไม่ได้เข้ารหัสออกมาเป็นสตริงเดียวกันที่นี่ และการถอดรหัส ULID จะได้ไบต์ที่เลื่อนไปสองบิต สัญลักษณ์ตรวจสอบ (check symbol) ซึ่งเป็นตัวเลือกในข้อกำหนดของ Crockford และเป็นอักขระเพิ่มเติมสำหรับค่าโมดูโล 37 ไม่ได้รับการรองรับ เครื่องมือนี้ไม่เพิ่มและไม่ตรวจสอบสัญลักษณ์ดังกล่าว
ข้อกำหนด
| ชุดตัวอักษร | 0-9 A-Z ยกเว้น I L O U |
|---|---|
| ขนาดเอาต์พุต | 8 อักขระต่อ 5 ไบต์ (160%) |
| แพดดิง | ไม่มี |
| มาตรฐาน | Crockford Base32 (2002) |
| แยกตัวพิมพ์เล็ก-ใหญ่ | ไม่ใช่ |
ตัวอย่าง
| อินพุต (UTF-8) | เอาต์พุต |
|---|---|
Hello, World! | 91JPRV3F5GG5EVVJDHJ22 |
Base64.is | 89GQ6S9P6GQ6JWR |
你好 | WJYT1SD5QM |
คำถามที่พบบ่อย
Crockford Base32 แยกตัวพิมพ์เล็ก-ใหญ่หรือไม่
ไม่แยก เอาต์พุตเป็นตัวพิมพ์ใหญ่โดยค่าเริ่มต้น และตัวเลือก “ตัวพิมพ์เล็ก” จะเปลี่ยนเป็นตัวพิมพ์เล็ก ตัวถอดรหัสรับได้ทั้งสองแบบ แม้จะปะปนกันในสตริงเดียว
ทำไม I, L, O และ U จึงไม่อยู่ในชุดตัวอักษร
I และ L สับสนกับ 1 ได้ง่าย และ O สับสนกับ 0 จึงถูกตัดออกและอ่านเป็นตัวเลขเหล่านั้นเมื่อถอดรหัส ส่วน U ถูกตัดออกเพื่อให้รหัสแบบสุ่มมีโอกาสน้อยลงที่จะกลายเป็นคำหยาบในภาษาอังกฤษ
เครื่องมือนี้รองรับสัญลักษณ์ตรวจสอบของ Crockford หรือไม่
* ~ $ = U เครื่องมือนี้ไม่เพิ่มและไม่ตรวจสอบอักขระนี้ จึงควรลบสัญลักษณ์ตรวจสอบออกก่อนถอดรหัสถอดรหัส ULID ที่นี่ได้หรือไม่
ไม่ได้ออกมาเป็น 16 ไบต์ที่ตรงตัว ULID เข้ารหัส 128 บิตเป็นตัวเลขเดียวโดยวางบิตส่วนเกินไว้ด้านหน้า ขณะที่เครื่องมือนี้ทำงานกับกลุ่มไบต์และวางบิตเหล่านั้นไว้ด้านท้าย ให้ใช้ไลบรารี ULID เพื่ออ่านส่วนเวลาประทับและส่วนสุ่ม