Cara menggunakan
- Pilih Enkode untuk mengubah teks atau byte menjadi Z85, atau Dekode untuk mengubah Z85 kembali menjadi data.
- Untuk kunci dan nilai biner lainnya, setel masukan ke Hex saat mengenkode, atau keluaran ke Hex saat mendekode.
- Ketik, tempel, atau klik Buka file. Hasilnya diperbarui saat Anda mengetik.
- Salin hasilnya atau unduh sebagai file.
Apa itu Z85?
Z85 dispesifikasikan dalam ZeroMQ RFC 32 (spesifikasi komunitas ZeroMQ, bukan RFC IETF). Seperti pengodean Base85 lainnya, Z85 mengubah setiap 4 byte menjadi 5 karakter: setiap kelompok dibaca sebagai bilangan 32 bit big-endian lalu ditulis sebagai 5 digit basis 85, dimulai dari digit paling signifikan. Keluarannya 25% lebih besar daripada masukan.
Yang membedakan Z85 adalah alfabetnya: 0-9, a-z, A-Z, dan 23 simbol .-:+=^!/*?&<>()[]{}@%$#. Alfabet ini tidak memuat kedua jenis tanda kutip, garis miring terbalik, backtick, koma, titik koma, garis tegak, tilde, dan garis bawah. Alfabetnya dirancang agar aman di dalam string kode sumber, sehingga nilai Z85 dapat ditempel di antara tanda kutip dalam C, Python, atau JSON tanpa escape sama sekali.
Penggunaan Z85
ZeroMQ memakai Z85 untuk menampilkan kunci CurveZMQ. Kunci publik atau rahasia sepanjang 32 byte menjadi string Z85 sepanjang 40 karakter, yaitu bentuk yang dikembalikan oleh zmq_curve_keypair() dan diterima oleh opsi socket untuk keamanan CURVE. Pustakanya juga menyediakan zmq_z85_encode() dan zmq_z85_decode(), dan binding seperti pyzmq menyediakan fungsi yang sama.
// C (libzmq)
char text[41]; // 32 byte -> 40 karakter + NUL
zmq_z85_encode(text, key, 32);
# Python (pyzmq)
from zmq.utils import z85
z85.encode(bytes.fromhex('864fd26fb559f75b')) # b'HelloWorld'
Baris terakhir adalah vektor uji dari spesifikasinya.
Panjang masukan: catatan tentang alat ini
RFC 32 mewajibkan masukan biner berupa kelipatan 4 byte dan string hasil enkode berupa kelipatan 5 karakter. Spesifikasi ini tidak mendefinisikan padding, dan implementasi yang ketat seperti zmq_z85_encode() menolak panjang lainnya.
Alat ini juga menerima panjang lain dengan aturan yang sama seperti Ascii85 dan Base85: kelompok terakhir berisi n byte menjadi n + 1 karakter. Ini adalah ekstensi nonstandar. Keluaran yang dihasilkan dengan cara ini mungkin ditolak oleh decoder Z85 lain, jadi isi data Anda hingga kelipatan 4 byte bila Anda memerlukan kompatibilitas. Kunci CurveZMQ berukuran 32 byte dan selalu memenuhi syarat ini.
Spesifikasi
| Alfabet | 0-9 a-z A-Z .-:+=^!/*?&<>()[]{}@%$# |
|---|---|
| Ukuran keluaran | 5 karakter per 4 byte (125%) |
| Padding | Tidak ada |
| Standar | ZeroMQ RFC 32 |
| Peka huruf besar-kecil | Ya |
Contoh
| Masukan (UTF-8) | Keluaran |
|---|---|
Hello, World! | nm=QNz.92jz/PV8aP |
Base64.is | lsB}Dhz^42A@ |
你好 | <H}kFRm= |
Pertanyaan yang sering diajukan
Apa perbedaan Z85 dan Ascii85?
! hingga u, yang mencakup tanda kutip dan garis miring terbalik, serta memiliki singkatan z untuk byte nol. Z85 menghindari karakter yang perlu di-escape dalam string dan tidak memiliki singkatan.Apakah Z85 memakai padding?
Tidak. Spesifikasinya hanya mengizinkan panjang masukan berupa kelipatan 4 byte. Alat ini mengenkode panjang lain dengan kelompok akhir yang lebih pendek, yang bukan bagian dari standar.
Bisakah Z85 dipakai di JSON, XML, atau URL?
Berapa panjang kunci CurveZMQ yang dienkode Z85?
Kunci CurveZMQ berukuran 32 byte, sehingga dienkode menjadi tepat 40 karakter. Untuk melihat kunci mentahnya, dekode di sini dengan keluaran Hex.