ตัวเข้ารหัสและถอดรหัส z-base-32

แปลงข้อความ ไบต์เลขฐานสิบหก หรือไฟล์เป็น z-base-32 และแปลงกลับ ชุดตัวอักษรพิมพ์เล็กของรูปแบบนี้ตัดอักขระที่สับสนได้ง่ายออก และเอาต์พุตไม่ต้องใช้แพดดิง

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

วิธีใช้งาน

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

z-base-32 คืออะไร

z-base-32 คือการเข้ารหัส Base32 ที่ Zooko Wilcox-O'Hearn ออกแบบให้คนอ่าน เขียน และพูดได้ง่ายขึ้น กลไกเหมือนกับ Base32 ตาม RFC 4648 คืออักขระแต่ละตัวเก็บข้อมูล 5 บิต และ 5 ไบต์กลายเป็น 8 อักขระ สิ่งที่ทำให้แตกต่างคือชุดตัวอักษร

ybndrfg8ejkmcpqxot1uwisza345h769

ชุดตัวอักษรนี้เป็นตัวพิมพ์เล็กทั้งหมด และตัด 0, 2, l และ v ออก เพราะสับสนได้ง่ายกับ o, z, 1 และ u อักขระยังถูกจัดเรียงลำดับใหม่ เอาต์พุต z-base-32 จึงดูไม่เหมือน Base32 มาตรฐานของไบต์ชุดเดียวกันเลย และตัวถอดรหัสตาม RFC 4648 ก็อ่านไม่ได้

ไม่มีแพดดิง เพราะความยาวของข้อมูลคำนวณได้จากความยาวของสตริง ข้อกำหนดยังเข้ารหัสสตริงบิตที่ไม่ครบเป็นไบต์ได้หากทั้งสองฝ่ายตกลงความยาวกันไว้ แต่เครื่องมือนี้ทำงานกับไบต์ที่ครบถ้วนเสมอ

z-base-32 ใช้ที่ไหนบ้าง

  • OpenPGP Web Key Directory (WKD) ในการเผยแพร่คีย์ที่ URL แบบ well-known ส่วน local part ของที่อยู่อีเมลจะถูกแปลงเป็นตัวพิมพ์เล็กและแฮชด้วย SHA-1 จากนั้นแฮชขนาด 20 ไบต์จะถูกเข้ารหัสแบบ z-base-32 เป็นชื่อไฟล์ยาว 32 อักขระ
  • ZRTP สตริงยืนยันตัวตนแบบสั้น (short authentication string) ที่ผู้สนทนาทั้งสองฝ่ายอ่านออกเสียงเพื่อตรวจจับการโจมตีแบบ man-in-the-middle สามารถแสดงเป็น Base32 ด้วยชุดตัวอักษร z-base-32 ได้ (RFC 6189)
  • Lightning Network ซอฟต์แวร์โหนดอย่าง lnd และ Core Lightning ส่งคืนข้อความที่ลงลายเซ็นแล้วเป็นสตริง z-base-32

สำหรับรูปแบบอื่นที่เป็นมิตรกับคน ให้เปรียบเทียบ Crockford Base32 ซึ่งคงลำดับตัวเลขไว้และยอมรับการพิมพ์ผิด กับ Base58 ซึ่งสั้นกว่าแต่แยกตัวพิมพ์เล็ก-ใหญ่

ข้อกำหนด

ชุดตัวอักษรybndrfg8ejkmcpqxot1uwisza345h769
ขนาดเอาต์พุต8 อักขระต่อ 5 ไบต์ (160%)
แพดดิงไม่มี
มาตรฐานz-base-32 (Zooko Wilcox-O'Hearn)
แยกตัวพิมพ์เล็ก-ใหญ่ไม่ใช่

ตัวอย่าง

อินพุต (UTF-8)เอาต์พุต
Hello, World!jb1sa5dxfoofq551pt1nn
Base64.isejozg3jsgozg1ha
你好h164b3pfzw

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

z-base-32 เหมือนกับ Base32 หรือไม่

ไม่เหมือน z-base-32 ใช้การแบ่งกลุ่มละ 5 บิตแบบเดียวกับ Base32 ตาม RFC 4648 แต่ใช้ชุดตัวอักษรที่ต่างออกไปและจัดเรียงใหม่ ทั้งยังไม่มีแพดดิง สตริง z-base-32 ต้องถอดรหัสด้วยตัวถอดรหัส z-base-32

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

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

ถ้าสตริงของฉันลงท้ายด้วยเครื่องหมาย = จะเป็นอย่างไร

z-base-32 ไม่ใช้แพดดิง แต่หากสตริงลงท้ายด้วยเครื่องหมาย = ตัวถอดรหัสจะละเว้นเครื่องหมายเหล่านั้นไป

จะหาแฮช WKD ได้อย่างไร
WKD ต้องใช้แฮช SHA-1 ของ local part ของที่อยู่อีเมลที่แปลงเป็นตัวพิมพ์เล็กแล้ว ซึ่งเครื่องมือนี้ไม่ได้คำนวณให้ ให้คำนวณแฮชด้วยเครื่องมืออื่น วางที่นี่เป็นอินพุตแบบเลขฐานสิบหก แล้วเข้ารหัส นอกจากนี้ GnuPG ยังแสดงแฮช WKD ได้โดยตรงด้วยตัวเลือก --with-wkd-hash