ตัวเข้ารหัสและถอดรหัส Base85
Base85 อัดสี่ไบต์ให้เหลือห้าอักขระ ASCII ซึ่งแน่นกว่าอัตราส่วน “3 ต่อ 4” ของ Base64 เพราะใช้ชุดอักขระ 85 ตัวแทนที่จะเป็น 64 ตัว รูปแบบ Ascii85 ของ Adobe อยู่ในทุกไฟล์ PostScript และ PDF ส่วนรูปแบบ Z85 (ZeroMQ) ที่ใหม่กว่าจะหลีกเลี่ยงอักขระที่ทำให้เกิดปัญหาในสตริงภาษา C และ XML เครื่องมือนี้เข้ารหัสและถอดรหัสได้ทั้งสองรูปแบบ พร้อมตัวคั่นที่เลือกใส่หรือไม่ก็ได้
วิธีแปลง Base85
-
1
เลือกรูปแบบ
Ascii85 สำหรับทรัพยากร PDF/PostScript และ Z85 สำหรับซอร์สโค้ดและโปรโตคอลเครือข่าย
-
2
วางข้อความหรืออัปโหลดไฟล์
ทิศทางเข้ารหัสรับไบต์ดิบ ส่วนทิศทางถอดรหัสรับสตริง Base85
-
3
ตัวเข้ารหัสแบ่งทีละ 4 ไบต์
ทุกบล็อก 4 ไบต์จะกลายเป็นสตริง Base85 ขนาด 5 อักขระ บล็อกสุดท้ายจะถูกเติมเต็มแล้วตัดส่วนเกินที่ท้ายออก
-
4
คัดลอกผลลัพธ์
Ascii85 เลือกครอบด้วยตัวคั่น `<~` และ `~>` ได้ ส่วน Z85 ไม่มีตัวคั่น
เปรียบเทียบขนาดที่เพิ่มขึ้น
| การเข้ารหัส | อักขระต่อ 4 ไบต์ | เพิ่มขึ้นเทียบกับไบนารี |
|---|---|---|
| Hex | 8 | +100% |
| Base64 | 5.33 (ปัดขึ้นเป็น 8 เมื่อมีการเติมเต็ม) | +37% |
| Base85 | 5 | +25% |
| ไบนารีดิบ | 4 | 0 |
ดังนั้นข้อมูลไบนารี 1 MB จะกลายเป็น 1.25 MB ใน Base85, 1.33 MB ใน Base64 และ 2 MB ใน hex
ชุดอักขระของ Ascii85 และ Z85
Ascii85 (RFC 1924 / Adobe): อักขระตั้งแต่ ! ถึง u (33–117 ใน ASCII) และใช้ z เป็นตัวย่อสำหรับไบต์ศูนย์สี่ตัว ใช้ในสตรีม PostScript และ PDF โดยครอบด้วย <~...~>
Z85 (ZeroMQ): ชุดย่อยที่หลีกเลี่ยงอักขระเครื่องหมายคำพูดและอักขระที่ต้องใส่ตัวหลีก
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#
ฝังลงใน JSON, XML, สตริงภาษา C และซอร์สโค้ดได้อย่างปลอดภัยโดยไม่ต้องใส่ตัวหลีก
หลักคณิตศาสตร์ทำงานอย่างไร
ทุก 4 ไบต์จะถูกอ่านเป็นจำนวนเต็ม 32 บิตแบบ big-endian ชื่อ N อักขระผลลัพธ์ 5 ตัวคือหลักของ N ในฐาน 85 โดยเรียงจากหลักสูงสุดก่อน 85^5 = 4 437 053 125 ซึ่งมากกว่า 2^32 ดังนั้น 4 ไบต์จึงพอดีกับ 5 อักขระเสมอ
เมื่อใด Ascii85 จึงสำคัญ
เปิดไฟล์ PDF ใดก็ได้ในโปรแกรมแก้ไขข้อความแล้วค้นหา ASCII85Decode Adobe ใช้มันเป็นตัวกรองสำหรับภาพและฟอนต์ที่ฝังไว้ ซึ่งต้องผ่านการส่งแบบ 7 บิต (ระบบเก่าแนวแฟกซ์) ส่วน Z85 ใช้กันแพร่หลายในคีย์ยืนยันตัวตน ZeroMQ CURVE
กรณีพิเศษ
- บล็อก 4 ไบต์ที่เป็นศูนย์ทั้งหมด — Ascii85 จะเข้ารหัสเป็นอักขระเดียว
zแทนที่จะเป็น!!!!! - บล็อก 4 ไบต์ที่เป็นช่องว่างทั้งหมด — บางรูปแบบใช้
yแทนช่องว่างสี่ตัว บางรูปแบบไม่ใช้ - บล็อกสุดท้ายที่ไม่เต็ม — เติมเต็มด้วยไบต์ศูนย์ แล้วตัดจำนวนอักขระผลลัพธ์ที่สอดคล้องกันออกที่ท้าย
คำถามที่พบบ่อย
ในแง่ที่ผลลัพธ์เล็กกว่า ใช่ แต่ในแง่ที่เข้ากันได้ทุกที่ ไม่ใช่ Base85 มีอักขระอย่าง <, >, &, " (ใน Ascii85) ที่ต้องใส่ตัวหลีกใน XML, JSON และ URL ส่วน Z85 หลีกเลี่ยงสิ่งนี้ แต่เครื่องมือส่วนใหญ่รองรับ Base64 อยู่แล้วโดยพื้นฐาน
ใช้ Ascii85 ถ้าทำงานกับไฟล์ PostScript หรือ PDF ใช้ Z85 สำหรับซอร์สโค้ด ไฟล์ตั้งค่า และโปรโตคอลเครือข่าย ส่วนการเข้ารหัส IPv6 ตาม RFC 1924 เป็นการกำหนดอักขระ 85 ตัวชุดเดียวกันในอีกแบบหนึ่ง และแทบไม่ได้ใช้จริง
ไม่ได้ ทั้งสองใช้ชุดอักขระต่างกัน การถอดรหัส Ascii85 ด้วยตารางของ Z85 จะได้ข้อมูลที่ไม่มีความหมาย เลือกหนึ่งรูปแบบก่อนเข้ารหัสแล้วใช้ให้สม่ำเสมอ
สำหรับ Adobe Ascii85 ในสตรีม PDF หรือ PostScript จำเป็น เพราะใช้กำหนดขอบเขตที่เข้ารหัสไว้ ส่วนการใช้แบบเดี่ยวและผลลัพธ์ Z85 ทั้งหมด ไม่จำเป็นต้องใช้ตัวคั่น
เครื่องมือที่เกี่ยวข้อง
ตัวเข้ารหัสรหัสลับ 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 การทำงานเดียวกันใช้ได้ทั้งเข้ารหัสและถอดรหัส
ตัวเข้ารหัสและถอดรหัส Base32
เข้ารหัสและถอดรหัสสตริง Base32 ด้วยตารางอักขระ RFC 4648 เหมาะสำหรับซีเคร็ต TOTP, โทเค็นที่ไม่แยกตัวพิมพ์ใหญ่เล็ก และตัวระบุที่มนุษย์ต้องพิมพ์
ตัวสร้าง bcrypt
สร้าง bcrypt hash จากรหัสผ่าน plaintext ปรับ cost factor ได้ตั้งแต่ 4 ถึง 14 ใช้ร่วมกับ Laravel, Django, Node และ PHP ได้
ตัวสร้าง bcrypt Hash
สร้าง bcrypt hash หรือตรวจสอบรหัสผ่าน plaintext กับ bcrypt hash ที่มีอยู่ โหมด generate และ verify อยู่ข้างกันในเครื่องมือเดียว