Nasıl kullanılır
- Metni veya baytları Z85'e dönüştürmek için "Kodla", Z85'i veriye geri çevirmek için "Kodu çöz" seçeneğini seçin.
- Anahtarlar ve diğer ikili değerler için kodlarken girdi biçimini, kod çözerken çıktı biçimini "Onaltılık" olarak ayarlayın.
- Yazın, yapıştırın veya bir dosya açın. Sonuç siz yazarken güncellenir.
- Sonucu kopyalayın veya dosya olarak indirin.
Z85 nedir?
Z85, ZeroMQ RFC 32'de tanımlanmıştır (bu bir IETF RFC'si değil, bir ZeroMQ topluluk belirtimidir). Diğer Base85 kodlamaları gibi her 4 baytı 5 karaktere dönüştürür: her grubu big-endian 32 bitlik bir sayı olarak okur ve en anlamlı basamak önce gelecek şekilde 5 adet 85 tabanlı basamakla yazar. Çıktı girdiden %25 daha büyüktür.
Z85'i farklı kılan alfabesidir: 0-9, a-z, A-Z ve 23 simge: .-:+=^!/*?&<>()[]{}@%$#. Her iki tırnak işaretini, ters eğik çizgiyi, ters tırnağı, virgülü, noktalı virgülü, dikey çizgiyi, tildeyi ve alt çizgiyi dışarıda bırakır. Alfabe kaynak koddaki dizelerde güvenli olacak şekilde tasarlanmıştır; bu nedenle bir Z85 değeri C, Python veya JSON'da tırnaklar arasına hiçbir kaçış uygulamadan yapıştırılabilir.
Z85 nerelerde kullanılır?
ZeroMQ, CurveZMQ anahtarlarını metin olarak göstermek için Z85 kullanır. 32 baytlık bir açık veya gizli anahtar 40 karakterlik bir Z85 dizesine dönüşür; zmq_curve_keypair() fonksiyonunun döndürdüğü ve CURVE güvenliği için soket seçeneklerinin kabul ettiği biçim budur. Kütüphane ayrıca zmq_z85_encode() ve zmq_z85_decode() fonksiyonlarını sunar; pyzmq gibi bağlamalar da aynı fonksiyonları sağlar.
// C (libzmq)
char text[41]; // 32 bayt -> 40 karakter + NUL
zmq_z85_encode(text, key, 32);
# Python (pyzmq)
from zmq.utils import z85
z85.encode(bytes.fromhex('864fd26fb559f75b')) # sonuç: b'HelloWorld'
Son satır, belirtimdeki test vektörüdür.
Girdi uzunluğu: bu araçla ilgili bir not
RFC 32, ikili girdinin 4 baytın, kodlanmış dizenin ise 5 karakterin katı olmasını şart koşar. Dolgu tanımlamaz ve zmq_z85_encode() gibi katı uygulamalar başka uzunlukları reddeder.
Bu araç, Ascii85 ve Base85 ile aynı kuralı kullanarak başka uzunlukları da kabul eder: n bayttan oluşan son grup n + 1 karaktere dönüşür. Bu standart dışı bir uzantıdır. Bu şekilde üretilen çıktı diğer Z85 kod çözücüleri tarafından reddedilebilir; bu nedenle uyumluluk gerektiğinde verinizi 4 baytın katına tamamlayın. CurveZMQ anahtarları 32 bayttır ve bu koşulu her zaman karşılar.
Teknik özellikler
| Alfabe | 0-9 a-z A-Z .-:+=^!/*?&<>()[]{}@%$# |
|---|---|
| Çıktı boyutu | 4 bayt başına 5 karakter (%125) |
| Dolgu | Yok |
| Standart | ZeroMQ RFC 32 |
| Büyük/küçük harf duyarlı | Evet |
Örnekler
| Girdi (UTF-8) | Çıktı |
|---|---|
Hello, World! | nm=QNz.92jz/PV8aP |
Base64.is | lsB}Dhz^42A@ |
你好 | <H}kFRm= |
Sıkça sorulan sorular
Z85 ile Ascii85 arasındaki fark nedir?
! ile u arasındaki ASCII aralığını kullanır ve sıfır baytlar için z kısaltmasına sahiptir. Z85 ise dizelerde kaçış gerektiren karakterlerden kaçınır ve kısaltma içermez.Z85 dolgu kullanır mı?
Hayır. Belirtim yalnızca 4 baytın katı olan girdi uzunluklarına izin verir. Bu araç diğer uzunlukları daha kısa bir son grupla kodlar; bu, standardın bir parçası değildir.
Z85'i JSON, XML veya URL'lerde kullanabilir miyim?
Z85 ile kodlanmış bir CurveZMQ anahtarı kaç karakterdir?
Bir CurveZMQ anahtarı 32 bayttır; bu nedenle tam olarak 40 karaktere kodlanır. Ham anahtarı görmek için burada "Onaltılık" çıktısıyla kodunu çözün.