Dipublikasikan: 11 Desember 2025
Terakhir diperbarui: 11 Desember 2025
Dipublikasikan: 11 Desember 2025
Terakhir diperbarui: 11 Desember 2025
Raymond Kelvin Nando — Base85, termasuk varian Z85, merupakan metode encoding biner-ke-teks yang mengonversi data biner menjadi representasi karakter yang lebih padat dibanding Base64. Base85 mengubah 4 byte (32 bit) menjadi 5 karakter ASCII sehingga meningkatkan efisiensi penyimpanan sekitar 25% dibanding Base64. Z85 adalah salah satu implementasi Base85 yang diperkenalkan oleh ZeroMQ dengan alfabet yang dioptimalkan agar mudah dibaca manusia, bebas karakter kontrol, dan aman untuk protokol teks.
Daftar Isi
Base85 adalah skema encoding yang mengubah data biner ke dalam alfabet 85 karakter ASCII yang dapat dicetak. Tujuannya adalah memadatkan data lebih baik dibanding Base64 sekaligus tetap aman untuk ditransmisikan melalui sistem berbasis teks. Z85 adalah implementasi Base85 dengan karakter yang dipilih secara khusus agar aman untuk manusia dan protokol jaringan, menghindari karakter yang membingungkan seperti spasi, kutip, dan backslash.
Alfabet Z85 terdiri dari 85 karakter:
0–9, a–z, A–Z, dan simbol tertentu (total 85 karakter), tanpa karakter yang bisa disalahartikan atau tidak dicetak.
Base85/Z85 digunakan dalam:
Base85 pertama kali diperkenalkan oleh Adobe sebagai bagian dari PostScript dan PDF encoding (ASCII85) untuk menulis data biner ke dokumen teks. Teknik ini kemudian menjadi standar untuk memadatkan data biner lebih baik daripada Base64 ketika kompatibilitas teks masih dibutuhkan.
Z85 dikembangkan oleh iMatix dan diperkenalkan sebagai bagian dari ZeroMQ library. Tujuannya adalah mengoptimalkan Base85 sehingga:
Sejak diperkenalkan, Z85 digunakan luas dalam messaging system, transfer data antar bahasa pemrograman, dan berbagai aplikasi serialization.
Base85/Z85 bekerja dengan mengelompokkan 4 byte (32 bit) menjadi 5 karakter.
Proses encoding:
Jika data tidak kelipatan 4 byte, padding dilakukan agar blok terakhir lengkap.
Alfabet Z85 (85 karakter) dioptimalkan untuk keterbacaan:
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#
Semua karakter dapat dicetak, tidak ambigu, dan aman untuk protokol teks.
Dekoding Base85/Z85 membalik proses:
Z85 tidak menggunakan karakter padding “=” seperti Base64.
Blok terakhir di-handle dengan aturan blok parsial.
Semua karakter dapat dicetak, kompatibel dengan JSON, XML, URL (dengan URL encoding jika perlu), dan protokol teks lain.
Encoding dan decoding deterministik, data asli dapat dipulihkan tanpa kehilangan informasi.
Bytes: 48 65 6C 6C 6F
Blok 4 byte pertama: 48 65 6C 6C → 5 karakter Base85: “nm=Qf”
Sisa 1 byte (0x6F) → di-handle blok parsial → tambahan output
Hasil Base85: nm=Qf<…>
Bytes: 01 02 03 04
Integer = 0x01020304 = 16909060
Encode → 5 karakter Base85/Z85: “!jH>h” (contoh)
Payload 8-byte: 12 34 56 78 9A BC DE F0
Blok pertama → 5 karakter
Blok kedua → 5 karakter
Output Z85: “nm=QfD4^&*” (representatif)
Input Z85: “nm=Qf”
Decode → blok 4 byte: 48 65 6C 6C
Gabungkan semua blok → data asli
Input 16-byte hash → 20 karakter Z85 output
Contoh: “HelloWorldHashData..” (representatif)
ASCII85 Adobe menggunakan karakter berbeda dan menambahkan simbol khusus (<~ … ~>), sedangkan Z85 lebih ringkas dan bebas simbol non-alfanumerik.
Data Base85/Z85 dapat langsung ditempatkan dalam JSON string tanpa escape tambahan.
Kelebihan:
Kekurangan: