Base85/Z85

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.

Pengertian Base85/Z85

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:

  • Protokol komunikasi yang memerlukan teks
  • Penyimpanan data biner dalam database teks
  • Transfer payload besar melalui JSON atau XML
  • Serialisasi data dalam messaging system seperti ZeroMQ
  • Representasi kunci, hash, atau token unik
Orang lain juga membaca :  ADS-B Encoding

Sejarah Perkembangan Base85/Z85

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:

  • Karakter yang dipakai semua dapat dicetak
  • Tidak ada whitespace, backslash, atau kutip
  • Mudah diketik dan dibaca manusia
  • Reversibel tanpa ambiguitas

Sejak diperkenalkan, Z85 digunakan luas dalam messaging system, transfer data antar bahasa pemrograman, dan berbagai aplikasi serialization.

Prinsip Dasar, dan Metode Base85/Z85

1. Blok Encoding

Base85/Z85 bekerja dengan mengelompokkan 4 byte (32 bit) menjadi 5 karakter.
Proses encoding:

  1. Ambil 4 byte (32 bit) → konversi menjadi integer 32-bit.
  2. Bagi integer tersebut secara berturut-turut dengan 85, simpan sisa.
  3. Sisa digunakan sebagai indeks alfabet Base85/Z85.
  4. Hasil 5 karakter mewakili 4 byte input.

Jika data tidak kelipatan 4 byte, padding dilakukan agar blok terakhir lengkap.

2. Alfabet Z85

Alfabet Z85 (85 karakter) dioptimalkan untuk keterbacaan:

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#

Semua karakter dapat dicetak, tidak ambigu, dan aman untuk protokol teks.

3. Dekoding

Dekoding Base85/Z85 membalik proses:

  • Ambil 5 karakter → konversi menjadi integer 32-bit
  • Pecah menjadi 4 byte biner
  • Gabungkan blok-blok untuk mendapatkan data asli

4. Tidak Ada Padding (Z85)

Z85 tidak menggunakan karakter padding “=” seperti Base64.
Blok terakhir di-handle dengan aturan blok parsial.

5. Efisiensi

  • Base64: 3 byte → 4 karakter → overhead 33%
  • Base85: 4 byte → 5 karakter → overhead 25%
    Sehingga Base85 lebih padat dibanding Base64.

6. Aman Untuk Teks

Semua karakter dapat dicetak, kompatibel dengan JSON, XML, URL (dengan URL encoding jika perlu), dan protokol teks lain.

Orang lain juga membaca :  Adaptive Huffman

7. Reversibel

Encoding dan decoding deterministik, data asli dapat dipulihkan tanpa kehilangan informasi.

Contoh Input → Output Base85/Z85

Contoh 1: String “Hello”

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<…>

Contoh 2: Data biner acak

Bytes: 01 02 03 04
Integer = 0x01020304 = 16909060
Encode → 5 karakter Base85/Z85: “!jH>h” (contoh)

Contoh 3: Serialisasi ZeroMQ

Payload 8-byte: 12 34 56 78 9A BC DE F0
Blok pertama → 5 karakter
Blok kedua → 5 karakter
Output Z85: “nm=QfD4^&*” (representatif)

Contoh 4: Decoding

Input Z85: “nm=Qf”
Decode → blok 4 byte: 48 65 6C 6C
Gabungkan semua blok → data asli

Contoh 5: Kunci atau hash

Input 16-byte hash → 20 karakter Z85 output
Contoh: “HelloWorldHashData..” (representatif)

Contoh 6: Variasi ASCII85

ASCII85 Adobe menggunakan karakter berbeda dan menambahkan simbol khusus (<~ … ~>), sedangkan Z85 lebih ringkas dan bebas simbol non-alfanumerik.

Contoh 7: Data URI atau teks transfer

Data Base85/Z85 dapat langsung ditempatkan dalam JSON string tanpa escape tambahan.

Kelebihan & Kekurangan Base85/Z85

Kelebihan:

  • Lebih padat daripada Base64 (25% overhead vs 33%)
  • Semua karakter dapat dicetak
  • Mudah dibaca manusia
  • Reversibel dan deterministik
  • Digunakan luas dalam ZeroMQ dan sistem protokol teks
  • Aman untuk JSON, XML, dan transfer data teks
  • Tidak ada padding di Z85
  • Cocok untuk kunci, hash, token, dan payload binary

Kekurangan:

  • Lebih kompleks dibanding Base64 dalam perhitungan
  • Blok parsial harus di-handle dengan hati-hati
  • Tidak menyediakan keamanan kriptografis
  • Tidak begitu populer di luar messaging/protokol tertentu
  • Implementasi tidak seragam di semua bahasa
  • Memerlukan tabel alfabet yang konsisten
  • Lebih sulit untuk input manual dibanding Base58 karena simbol non-alfanumerik di Base85 (ASCII85)
Orang lain juga membaca :  AES-CTR Bitstream Encoding

Referensi

  • iMatix Corporation. Z85 Encoding Specification.
  • Adobe Systems. ASCII85 (Base85) Encoding Specification.
  • RFC 1924: Compact Representation of IPv6 Addresses (Base85 variant).
  • ZeroMQ Documentation: Z85 Encoding.
  • Josefsson, S. (2006). The Base16, Base32, and Base64 Data Encodings.

Citation

Previous Article

Base64

Next Article

Binary Coded Symbol (BCS)

Citation copied!