ตัวเข้ารหัสและถอดรหัส 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 ตัวถอดรหัสรับอินพุตทั้งแบบมีและไม่มีแพดดิง

  4. 4

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

    ผลลัพธ์ที่เข้ารหัสเป็นตัวพิมพ์ใหญ่ เติม `=` จนครบจำนวนเท่าของ 8

ตารางอักขระ 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 กำหนดให้ต้องมีแพดดิงในการเข้ารหัส เครื่องมือนี้จะเติม = ต่อท้ายผลลัพธ์ที่เข้ารหัสเสมอจนความยาวเป็นจำนวนเท่าของ 8 ผู้ใช้งานจริงส่วนใหญ่ (แอป TOTP, ไลบรารี ULID, ตัวแก้ปัญหา DNSSEC) รับอินพุตที่ไม่มีแพดดิงได้ และตัวถอดรหัสที่นี่ก็รับทั้งแบบมีและไม่มีแพดดิง

Base32 มาตรฐานไม่มี 0, 1, 8 หรือ 9 และเป็นตัวพิมพ์ใหญ่เสมอ ตัวถอดรหัสจะละเว้นอักขระนอกตาราง RFC 4648 อย่างเงียบ ๆ อินพุตที่มีตัวพิมพ์เล็กหรืออักขระแปลก ๆ จึงถูกถอดรหัสเป็นไบต์ที่ผิดพลาด ให้ปรับอินพุตเป็นตัวพิมพ์ใหญ่ A-Z และตัวเลข 2-7 ก่อนถอดรหัส

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

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

ตัวเข้ารหัสไฟล์ Base64

เข้ารหัสไฟล์ใดก็ได้ (PDF, ZIP, รูปภาพ, ไฟล์ปฏิบัติการ) เป็นข้อความ Base64 เพื่อฝังใน JSON, อีเมล, YAML หรือ data URI ทำงานในเครื่องของคุณ ไม่มีการอัปโหลด

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

เข้ารหัสข้อความ UTF-8 หรือไบต์เลขฐานสิบหก และถอดรหัส Base58 อย่างปลอดภัยด้วยชุดอักขระ Bitcoin, Ripple หรือ Flickr

เครื่องมือเข้ารหัสซีซาร์

เข้ารหัสและถอดรหัสข้อความด้วยรหัสซีซาร์ เลื่อนได้ตั้งแต่ 1-25 รองรับ ROT13 เป็นกรณีพิเศษ และคงเครื่องหมายวรรคตอนกับตัวพิมพ์ใหญ่-เล็กไว้เหมือนเดิม

ตัวสร้าง bcrypt

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

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

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

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

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

เครื่องมือนี้มีให้บริการในภาษาอื่น