ตัวเข้ารหัสและถอดรหัส Crockford Base32

แปลงข้อความ ไบต์เลขฐานสิบหก หรือไฟล์เป็น Base32 ของ Douglas Crockford และแปลงกลับ ตัวถอดรหัสยอมรับการพิมพ์ผิด โดยไม่สนใจตัวพิมพ์และขีดกลาง และอ่าน O เป็น 0 ส่วน I หรือ L เป็น 1

ทำงานภายในเบราว์เซอร์ของคุณทั้งหมด ไม่มีการอัปโหลดข้อมูลใด ๆ

วิธีใช้งาน

  1. เลือก “เข้ารหัส” เพื่อแปลงข้อความเป็น Crockford Base32 หรือ “ถอดรหัส” เพื่อแปลงกลับเป็นข้อความ
  2. คง “รูปแบบ” ไว้ที่ Crockford และตรวจสอบว่าปิด “แพดดิง” อยู่ เปิด “ตัวพิมพ์เล็ก” หากต้องการเอาต์พุตเป็นตัวพิมพ์เล็ก
  3. พิมพ์หรือวางอินพุต หรือเปิดไฟล์ เมื่อถอดรหัส ขีดกลางและช่องว่างจะถูกละเว้น
  4. คัดลอกผลลัพธ์หรือดาวน์โหลดเป็นไฟล์

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.is89GQ6S9P6GQ6JWR
你好WJYT1SD5QM

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

Crockford Base32 แยกตัวพิมพ์เล็ก-ใหญ่หรือไม่

ไม่แยก เอาต์พุตเป็นตัวพิมพ์ใหญ่โดยค่าเริ่มต้น และตัวเลือก “ตัวพิมพ์เล็ก” จะเปลี่ยนเป็นตัวพิมพ์เล็ก ตัวถอดรหัสรับได้ทั้งสองแบบ แม้จะปะปนกันในสตริงเดียว

ทำไม I, L, O และ U จึงไม่อยู่ในชุดตัวอักษร

I และ L สับสนกับ 1 ได้ง่าย และ O สับสนกับ 0 จึงถูกตัดออกและอ่านเป็นตัวเลขเหล่านั้นเมื่อถอดรหัส ส่วน U ถูกตัดออกเพื่อให้รหัสแบบสุ่มมีโอกาสน้อยลงที่จะกลายเป็นคำหยาบในภาษาอังกฤษ

เครื่องมือนี้รองรับสัญลักษณ์ตรวจสอบของ Crockford หรือไม่
ไม่รองรับ ข้อกำหนดอนุญาตให้มีอักขระเพิ่มเติมที่เป็นตัวเลือกสำหรับเก็บเช็กซัมโมดูโล 37 ซึ่งใช้สัญลักษณ์เพิ่มเติม * ~ $ = U เครื่องมือนี้ไม่เพิ่มและไม่ตรวจสอบอักขระนี้ จึงควรลบสัญลักษณ์ตรวจสอบออกก่อนถอดรหัส
ถอดรหัส ULID ที่นี่ได้หรือไม่

ไม่ได้ออกมาเป็น 16 ไบต์ที่ตรงตัว ULID เข้ารหัส 128 บิตเป็นตัวเลขเดียวโดยวางบิตส่วนเกินไว้ด้านหน้า ขณะที่เครื่องมือนี้ทำงานกับกลุ่มไบต์และวางบิตเหล่านั้นไว้ด้านท้าย ให้ใช้ไลบรารี ULID เพื่ออ่านส่วนเวลาประทับและส่วนสุ่ม