ตัวเข้ารหัสและถอดรหัสด้วยชุดตัวอักษรแบบกำหนดเอง

พิมพ์ชุดตัวอักษรของคุณเองหรือเริ่มจากพรีเซ็ต แล้วใช้ชุดนั้นเข้ารหัสหรือถอดรหัส เลือกวิธีเลขจำนวนใหญ่สำหรับชุดตัวอักษรยาวเท่าใดก็ได้ หรือเลือกกลุ่มบิตสำหรับเอาต์พุตแบบ RFC 4648

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

วิธีใช้งาน

  1. พิมพ์ชุดตัวอักษรของคุณ หรือเลือก “พรีเซ็ต” แล้วแก้ไข อักขระแต่ละตัวปรากฏได้เพียงครั้งเดียว
  2. เลือก “วิธีการ” ได้แก่ “เลขจำนวนใหญ่ (แบบ Base58)” สำหรับชุดตัวอักษรยาวเท่าใดก็ได้ หรือ “กลุ่มบิต (แบบ RFC 4648)” สำหรับชุดตัวอักษรที่มี 2, 4, 8, 16, 32 หรือ 64 อักขระ
  3. หากใช้กลุ่มบิต คุณป้อน “อักขระแพดดิง” ที่ไม่อยู่ในชุดตัวอักษรได้ตามต้องการ
  4. เข้ารหัสข้อความของคุณ หรือวางสตริงที่เขียนด้วยชุดตัวอักษรของคุณเพื่อถอดรหัส

สองวิธีในการจับคู่ไบต์กับอักขระ

เลขจำนวนใหญ่ ทำงานแบบเดียวกับ Base58 อินพุตทั้งหมดจะถูกอ่านเป็นจำนวนเต็มขนาดใหญ่ตัวเดียว แล้วหารด้วยความยาวของชุดตัวอักษรซ้ำไปเรื่อย ๆ เศษจากการหารแต่ละครั้งใช้เลือกอักขระหนึ่งตัว วิธีนี้ใช้ได้กับชุดตัวอักษรใดก็ได้ที่มีอย่างน้อย 2 อักขระ เช่น 10, 36, 58 หรือ 62 ไบต์ศูนย์ที่นำหน้าจะเขียนเป็นอักขระตัวแรกของชุดตัวอักษร จึงยังคงอยู่เมื่อเข้ารหัสแล้วถอดรหัสกลับ วิธีนี้ไม่มีแพดดิง และจำกัดอินพุตไว้ที่ประมาณ 20 KB เพราะการคำนวณจะช้าลงเมื่อข้อมูลยาว

กลุ่มบิต ทำงานแบบเดียวกับ RFC 4648 อินพุตจะถูกตัดเป็นส่วน ๆ ที่มีจำนวนบิตคงที่ คือ 1 บิตสำหรับชุดตัวอักษร 2 อักขระ 4 บิตสำหรับ 16 อักขระ 5 บิตสำหรับ 32 อักขระ และ 6 บิตสำหรับ 64 อักขระ แต่ละส่วนคือดัชนีที่ชี้ไปยังอักขระในชุดตัวอักษร นี่คือวิธีที่เลขฐานสิบหก, Base32 และ Base64 ทำงานทุกประการ และความยาวเอาต์พุตขึ้นอยู่กับความยาวอินพุตเท่านั้น

ทำไมสองวิธีจึงให้ผลลัพธ์ต่างกัน

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

ชุดตัวอักษรอินพุตกลุ่มบิตเลขจำนวนใหญ่
Base64 มาตรฐานHiSGk=Ehp
Base32 ตาม RFC 4648HiJBUQ====SDJ
01A010000011000001
0123456789Hiใช้ไม่ได้18537

เมื่อใช้กลุ่มบิตและใช้ = เป็นแพดดิง ชุดตัวอักษรมาตรฐานจะให้ผลเหมือน Base64 และ Base32 ปกติ ส่วนเลขจำนวนใหญ่จะตัดบิตศูนย์ที่นำหน้าของ A ออก เพราะเขียนเป็นค่าตัวเลข ไม่ใช่จำนวนบิตที่คงที่ และเมื่อใช้ตัวเลขสิบตัวเป็นชุดตัวอักษร ผลลัพธ์ก็คือไบต์ของ Hi ในรูปเลขฐานสิบนั่นเอง

อักขระแพดดิงใช้กับกลุ่มบิตเท่านั้น เอาต์พุตจะถูกเติมจนความยาวเป็นพหุคูณของ 4 อักขระสำหรับชุดตัวอักษร 64 อักขระ และเป็นพหุคูณของ 8 สำหรับชุดตัวอักษร 32 และ 8 อักขระ สำหรับชุดตัวอักษร 2, 4 หรือ 16 อักขระ ทุกไบต์จะเต็มอักขระพอดี จึงไม่ต้องใช้แพดดิงเลย

กฎของชุดตัวอักษรที่ถูกต้อง

  • มีอย่างน้อยสองอักขระ
  • ห้ามมีอักขระซ้ำ ตัวถอดรหัสจะจับคู่อักขระแต่ละตัวกลับเป็นค่าเพียงค่าเดียว หาก a แทนทั้ง 0 และ 10 สตริงที่มีอักขระนี้จะถอดรหัสไม่ได้
  • ตัวพิมพ์เล็ก-ใหญ่มีความหมาย a และ A เป็นอักขระต่างกัน
  • อักขระแพดดิงต้องไม่อยู่ในชุดตัวอักษร มิฉะนั้นจะแยกไม่ออกว่าเป็นแพดดิงหรือข้อมูล

ทุกอย่างทำงานในเบราว์เซอร์ของคุณ ชุดตัวอักษรและข้อมูลของคุณจึงอยู่บนอุปกรณ์ของคุณเท่านั้น

ชุดตัวอักษรแบบกำหนดเองมีประโยชน์เมื่อใด

  • ID ที่ปกปิดรูปแบบ ชุดตัวอักษรที่สลับลำดับจะเปลี่ยนตัวระบุให้เป็นโทเค็นที่ไม่มีรูปแบบชัดเจน วิธีนี้ช่วยซ่อนแต่ไม่ได้ปกป้องข้อมูล ใครก็ตามที่รู้ชุดตัวอักษรก็ถอดรหัสได้
  • รูปแบบเฉพาะของระบบหรือรูปแบบเก่า คัดลอกชุดตัวอักษรของระบบนั้นจากเอกสารประกอบ แล้วถอดรหัสข้อมูลได้โดยตรง
  • การเรียนรู้ เปรียบเทียบความยาวของชุดตัวอักษรและทั้งสองวิธีเพื่อดูว่าการแปลงฐานทำงานอย่างไร สำหรับชุดตัวอักษรแบบตายตัว ดูที่ Base58 และ Base62

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

เลขจำนวนใหญ่กับกลุ่มบิตต่างกันอย่างไร

เลขจำนวนใหญ่แปลงอินพุตทั้งหมดเป็นจำนวนเต็มตัวเดียวแล้วเขียนในฐานใหม่ แบบเดียวกับ Base58 และใช้ได้กับชุดตัวอักษรทุกความยาว ส่วนกลุ่มบิตแบ่งอินพุตเป็นส่วน ๆ ที่มีจำนวนบิตคงที่ แบบเดียวกับ Base64 และต้องใช้ชุดตัวอักษรที่มี 2, 4, 8, 16, 32 หรือ 64 อักขระ

ทำไมชุดตัวอักษร Base64 ที่กำหนดเองจึงให้ผลไม่ตรงกับ Base64 มาตรฐาน

Base64 มาตรฐานใช้กลุ่มบิต ให้เลือกวิธี “กลุ่มบิต (แบบ RFC 4648)” และตั้ง = เป็นอักขระแพดดิงเพื่อให้ผลตรงกัน วิธีเลขจำนวนใหญ่จะให้สตริงที่ต่างออกไปโดยสิ้นเชิงแม้ใช้ชุดตัวอักษรเดียวกัน

ทำไมจึงไม่อนุญาตให้มีอักขระซ้ำ

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

ใช้อักขระแพดดิงกับวิธีเลขจำนวนใหญ่ได้หรือไม่

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

ชุดตัวอักษรแบบกำหนดเองถือเป็นการเข้ารหัสลับหรือไม่

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