วิธีใช้งาน
- พิมพ์ชุดตัวอักษรของคุณ หรือเลือก “พรีเซ็ต” แล้วแก้ไข อักขระแต่ละตัวปรากฏได้เพียงครั้งเดียว
- เลือก “วิธีการ” ได้แก่ “เลขจำนวนใหญ่ (แบบ Base58)” สำหรับชุดตัวอักษรยาวเท่าใดก็ได้ หรือ “กลุ่มบิต (แบบ RFC 4648)” สำหรับชุดตัวอักษรที่มี 2, 4, 8, 16, 32 หรือ 64 อักขระ
- หากใช้กลุ่มบิต คุณป้อน “อักขระแพดดิง” ที่ไม่อยู่ในชุดตัวอักษรได้ตามต้องการ
- เข้ารหัสข้อความของคุณ หรือวางสตริงที่เขียนด้วยชุดตัวอักษรของคุณเพื่อถอดรหัส
สองวิธีในการจับคู่ไบต์กับอักขระ
เลขจำนวนใหญ่ ทำงานแบบเดียวกับ Base58 อินพุตทั้งหมดจะถูกอ่านเป็นจำนวนเต็มขนาดใหญ่ตัวเดียว แล้วหารด้วยความยาวของชุดตัวอักษรซ้ำไปเรื่อย ๆ เศษจากการหารแต่ละครั้งใช้เลือกอักขระหนึ่งตัว วิธีนี้ใช้ได้กับชุดตัวอักษรใดก็ได้ที่มีอย่างน้อย 2 อักขระ เช่น 10, 36, 58 หรือ 62 ไบต์ศูนย์ที่นำหน้าจะเขียนเป็นอักขระตัวแรกของชุดตัวอักษร จึงยังคงอยู่เมื่อเข้ารหัสแล้วถอดรหัสกลับ วิธีนี้ไม่มีแพดดิง และจำกัดอินพุตไว้ที่ประมาณ 20 KB เพราะการคำนวณจะช้าลงเมื่อข้อมูลยาว
กลุ่มบิต ทำงานแบบเดียวกับ RFC 4648 อินพุตจะถูกตัดเป็นส่วน ๆ ที่มีจำนวนบิตคงที่ คือ 1 บิตสำหรับชุดตัวอักษร 2 อักขระ 4 บิตสำหรับ 16 อักขระ 5 บิตสำหรับ 32 อักขระ และ 6 บิตสำหรับ 64 อักขระ แต่ละส่วนคือดัชนีที่ชี้ไปยังอักขระในชุดตัวอักษร นี่คือวิธีที่เลขฐานสิบหก, Base32 และ Base64 ทำงานทุกประการ และความยาวเอาต์พุตขึ้นอยู่กับความยาวอินพุตเท่านั้น
ทำไมสองวิธีจึงให้ผลลัพธ์ต่างกัน
วิธีหนึ่งเข้ารหัสค่าทางตัวเลขของข้อมูล ส่วนอีกวิธีเข้ารหัสบิตทีละตำแหน่ง ผลลัพธ์จึงมักต่างกัน และต้องถอดรหัสสตริงด้วยวิธีเดียวกับที่ใช้สร้างสตริงนั้น
| ชุดตัวอักษร | อินพุต | กลุ่มบิต | เลขจำนวนใหญ่ |
|---|---|---|---|
| Base64 มาตรฐาน | Hi | SGk= | Ehp |
| Base32 ตาม RFC 4648 | Hi | JBUQ==== | SDJ |
01 | A | 01000001 | 1000001 |
0123456789 | Hi | ใช้ไม่ได้ | 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)” และตั้ง = เป็นอักขระแพดดิงเพื่อให้ผลตรงกัน วิธีเลขจำนวนใหญ่จะให้สตริงที่ต่างออกไปโดยสิ้นเชิงแม้ใช้ชุดตัวอักษรเดียวกัน
ทำไมจึงไม่อนุญาตให้มีอักขระซ้ำ
อักขระแต่ละตัวต้องถอดรหัสได้เป็นค่าเพียงค่าเดียว อักขระที่ซ้ำจะมีสองความหมาย และไม่สามารถกู้คืนข้อมูลต้นฉบับได้อย่างแน่นอน
ใช้อักขระแพดดิงกับวิธีเลขจำนวนใหญ่ได้หรือไม่
ไม่ได้ เอาต์พุตของวิธีเลขจำนวนใหญ่ไม่มีขนาดบล็อกที่คงที่ จึงไม่มีอะไรต้องเติม ตัวเลือกแพดดิงใช้กับกลุ่มบิตเท่านั้น
ชุดตัวอักษรแบบกำหนดเองถือเป็นการเข้ารหัสลับหรือไม่
ไม่ใช่ วิธีนี้ยังคงเป็นการเข้ารหัสข้อมูลที่ไม่มีคีย์ ชุดตัวอักษรที่สลับลำดับอาจทำให้จดจำข้อมูลได้ยากขึ้นเมื่อมองผ่าน ๆ แต่ไม่ควรใช้เพื่อปกป้องข้อมูลลับเด็ดขาด