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

Base32 แสดงข้อมูลไบนารีด้วยอักขระ 32 ตัว ได้แก่ ตัวเลข 2-7 และตัวพิมพ์ใหญ่ 26 ตัว โดยไม่มี 0/O หรือ 1/I เพื่อเลี่ยงการอ่านผิด จึงเหมาะกับสิ่งที่มนุษย์ต้องพิมพ์หรืออ่านออกเสียง เช่น ซีเคร็ต TOTP สำหรับยืนยันตัวตนสองชั้น, รหัสบัตรกำนัล และตัวระบุที่ไม่แยกตัวพิมพ์ใหญ่เล็ก เครื่องมือนี้เข้ารหัสไบนารีหรือข้อความเป็น Base32 และถอดรหัสกลับ ตามมาตรฐาน RFC 4648 พร้อมแพดดิงที่เลือกได้

วิธีเข้ารหัสหรือถอดรหัส Base32

  1. 1

    วางข้อความหรืออัปโหลดไฟล์

    อินพุตจะถูกมองเป็นไบต์ และข้อความจะตีความเป็น UTF-8 เป็นค่าเริ่มต้น

  2. 2

    เลือกทิศทาง

    เข้ารหัสเพื่อเปลี่ยนไบต์ดิบเป็นสตริง Base32 หรือถอดรหัสเพื่อกู้ไบต์กลับมา

  3. 3

    ตั้งค่าแพดดิง

    RFC 4648 กำหนดแพดดิง `=` ให้ความยาวเป็นจำนวนเท่าของ 8 ปิดได้สำหรับซีเคร็ต TOTP และโทเค็นแบบกระชับ

  4. 4

    คัดลอกผลลัพธ์

    ผลลัพธ์ที่เข้ารหัสจะเป็นตัวพิมพ์ใหญ่ มีหรือไม่มีแพดดิงตามการตั้งค่าของคุณ

ตารางอักขระ RFC 4648

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 2 3 4 5 6 7

ไม่มี 0, ไม่มี 1, ไม่มี 8, ไม่มี 9 อักขระแต่ละตัวเข้ารหัส 5 บิต (2^5 = 32) ดังนั้นอินพุต 5 ไบต์จะกลายเป็นเอาต์พุต 8 อักขระ

ตัวอย่างประกอบ

การเข้ารหัสสตริง ASCII foo (ไบต์ 0x66 0x6F 0x6F = 01100110 01101111 01101111):

  1. แบ่งเป็นกลุ่มละ 5 บิต: 01100 11001 10111 10110 1111 (กลุ่มสุดท้ายเติมแพดดิง)
  2. จับคู่กับตารางอักขระ: M Z X W 6
  3. เติมแพดดิง === ให้ครบ 8 อักขระ: MZXW6===

แพดดิงและกฎเรื่องความยาว

ไบต์อินพุต ความยาวเอาต์พุต แพดดิง
1 8 ======
2 8 ====
3 8 ===
4 8 =
5 8 (ไม่มี)

รูปแบบอื่นนอกเหนือจาก RFC 4648

  • Base32 Hex — ตารางอักขระ 0-9A-V ใช้โดย NSEC3 ใน DNSSEC
  • Crockford’s Base32 — ตารางอักขระที่ปรับให้เหมาะกับการพิมพ์ของมนุษย์ แทนที่ O0, I/L1 ตอนถอดรหัส ใช้โดย ULID และคีย์ลิขสิทธิ์บางแบบ

ค่าเริ่มต้นของเครื่องมือนี้คือ RFC 4648 มาตรฐาน

ซีเคร็ต TOTP

รูปแบบ URI otpauth:// ที่ Google Authenticator และแอป 2FA สมัยใหม่ทุกตัวใช้ จะเข้ารหัสซีเคร็ตที่แชร์กันเป็น Base32 แบบไม่มีแพดดิง เมื่อคุณสแกน QR สำหรับ “My Service” พารามิเตอร์ secret= คือสตริง Base32 ใช้เครื่องมือนี้ถอดรหัสเพื่อตรวจสอบไบต์ดิบที่ HMAC ใช้

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

Base32 ไม่แยกตัวพิมพ์ใหญ่เล็กและเลี่ยงอักขระที่ดูคล้ายกัน ซึ่งสำคัญกับสิ่งที่มนุษย์อ่านหรือพิมพ์ Base64 แน่นกว่า (ใช้อักขระน้อยกว่าสำหรับไบต์เท่ากัน) แต่ต้องแยก I จาก l และ 0 จาก O ซึ่งมักพลาดในลายมือและตัวพิมพ์เล็ก

RFC 4648 บอกว่าจำเป็น แต่ผู้ใช้งานจริงส่วนใหญ่ (แอป TOTP, ไลบรารี ULID, ตัวแก้ปัญหา DNSSEC) รับอินพุตที่ไม่มีแพดดิงได้ เครื่องมือนี้ให้คุณเลือก วางมาแบบใดก็ควรถอดรหัสได้

Base32 มาตรฐานไม่มี 0, 1, 8 หรือ 9 และเป็นตัวพิมพ์ใหญ่เสมอ ถ้าอินพุตของคุณมีตัวเหล่านั้น อาจเป็นรูปแบบ Crockford หรือ base32hex ไม่ใช่ RFC 4648 ลองจัดอินพุตให้สะอาดหรือเลือกรูปแบบที่ถูกต้อง

ไม่ การเข้ารหัสและถอดรหัสเกิดขึ้นในเบราว์เซอร์ ทั้งอินพุตและผลลัพธ์ไม่ออกจากเครื่องของคุณ

เครื่องมือที่เกี่ยวข้อง

ตัวเข้ารหัสรหัสลับ A1Z26

เข้ารหัสข้อความด้วยรหัสลับ A1Z26 (A=1, B=2, ... Z=26) หรือถอดรหัสลำดับตัวเลขกลับเป็นตัวอักษร พร้อมปรับตัวคั่นได้

เข้ารหัส / ถอดรหัส AES

เข้ารหัสและถอดรหัสข้อความความเสี่ยงต่ำด้วย AES cipher ของ OpenSSL passphrase จะถูก hash ด้วย SHA-256 และผลลัพธ์ Base64 มี IV รวมกับข้อความเข้ารหัส

ตัวเข้ารหัส Atbash Cipher

เข้ารหัสหรือถอดรหัสข้อความด้วยรหัส Atbash ซึ่งเป็นการแทนที่แบบฮีบรูที่จับคู่ A-Z เป็น Z-A การทำงานเดียวกันใช้ได้ทั้งเข้ารหัสและถอดรหัส

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

เข้ารหัสและถอดรหัส Base85 ในรูปแบบ Adobe Ascii85 (PostScript/PDF) หรือ Z85 (ZeroMQ) กะทัดรัดกว่า Base64 สำหรับข้อมูลไบนารี

ตัวสร้าง bcrypt

สร้าง bcrypt hash จากรหัสผ่าน plaintext ปรับ cost factor ได้ตั้งแต่ 4 ถึง 14 ใช้ร่วมกับ Laravel, Django, Node และ PHP ได้

ตัวสร้าง bcrypt Hash

สร้าง bcrypt hash หรือตรวจสอบรหัสผ่าน plaintext กับ bcrypt hash ที่มีอยู่ โหมด generate และ verify อยู่ข้างกันในเครื่องมือเดียว