Z85 Kodlayıcı

Z85 (ZeroMQ base-85) dizesi olarak kodlamak için metin girin.

Sonuç

nm=QNzVx+q
5 bayt (dolguyla 8)
3 sıfır bayt

Nasıl hesaplanır?

Metin ham UTF-8 baytları olarak okunur. Bayt sayısı 4'ün katı değilse sonuna 4'ün katı olana kadar sıfır baytı (0x00) eklenir. Her 4 baytlık grup tek bir büyük-endian 32 bit sayı olarak okunur: V = b1·256³ + b2·256² + b3·256 + b4; bu sayı en anlamlı basamak başta olacak şekilde beş base-85 basamağıyla yazılır: V = d1·85⁴ + d2·85³ + d3·85² + d4·85 + d5. 0 ile 84 arasındaki her basamak, Z85 alfabesinde o sıradaki karakterle değiştirilir; alfabe 0-9, a-z, A-Z ile başlar, ardından noktalama gelir (.-:+=^!/*?&<>()[]{}@%$#). Çıktıda eklenen dolgu gösterilir; böylece kodlanmış dizenin özgün veriden uzun olduğunu görürsünüz. Boş giriş sonuç vermez. Dolgu çıktıda işaretlenmez, bu yüzden çözücü onu gerçek sıfır baytlarından ayıramaz.

Örnek hesaplama

Hello girişi 5 bayttır, 8'e tamamlamak için 3 sıfır baytı eklenir. 1. grup "Hell" = 0x48656C6C = 1.214.606.444 olup base 85'te 23, 22, 66, 52, 49 basamaklarını ve nm=QN karakterlerini verir. 2. grup "o" artı üç sıfır baytı = 1.862.270.976, basamaklar 35, 57, 33, 65, 26 ve karakterler zVx+q'dur. Birleşince: nm=QNzVx+q; araç 5 bayt (dolguyla 8) ve 3 sıfır bayt dolgu bildirir.

Bu örneği dene →

Sık yapılan hatalar

  • Çıktının tam olarak özgün metne geri çevrilebileceğini sanmak: sıfır dolgusu işaretlenmediği için çözme, dolgulu baytları ve sondaki NUL karakterlerini geri verir.
  • Bayt yerine karakter saymak: aksanlı ya da Latin olmayan harfler UTF-8'de 2 ile 4 bayt tutar; örneğin "ğ" 2 bayttır ve uzunluğu ile dolguyu değiştirir.
  • Z85'i Adobe Ascii85 ya da Python ve git'in base85'iyle karıştırmak: alfabeler farklıdır, dizeler birbirinin yerine kullanılamaz.
  • Kodlamayı şifreleme sanmak. Bu, hiçbir gizlilik sağlamayan geri çevrilebilir bir gösterimdir.
  • Bir ZeroMQ anahtarını yapıştırıp değişmeden çıkmasını beklemek; Z85 anahtarlar zaten kodludur, tekrar kodlamak farklı ve daha uzun bir dize üretir.

Bu hesaplama hakkında

Z85, ZeroMQ projesinin ZMTP/spec:32 özelliğinde tanımlanan, ikiliden metne base-85 kodlamasıdır ve ikili veriyi base64'ten daha yoğun biçimde yazdırılabilir ASCII'ye paketlemek için tasarlanmıştır: base64 veriyi yaklaşık %33 büyütürken, Z85'in 85 sembollük alfabesi veriyi yalnızca %25 büyütür ve her 4 baytlık girdiyi tam olarak 5 çıktı karakterine kodlar.

Bu 4 baytlık gruplama sabit olduğundan, Z85 girdi uzunluğunun 4 baytın katı olmasını gerektirir; bu yüzden kodlayıcılar dönüştürmeden önce daha kısa girdileri sıfırla tamamlar. Z85, en çok ZeroMQ'nun kendi CURVE güvenlik açık ve gizli anahtarları için kullandığı kodlama olarak bilinir; bu, anahtarları düz metin olarak yazdırmayı, günlüklemeyi veya yapıştırmayı güvenli hale getirir.

Bu faydalı oldu mu?

En fazla 3 tepki seçebilirsiniz.

Yorumlar (1)

  • Editör ekibi

    Z85 her dört baytı beş karaktere çevirir; bu yüzden çıktı girdiden yüzde 25 uzundur ve hazır Hello metni 8 bayta tamamlandıktan sonra 10 karakter olur. Alfabe tırnak ve ters eğik çizgiden kaçındığı için kaynak kod dizelerine uygundur, ama ve işareti ile küçüktür ve büyüktür işaretlerini içerir; HTML ya da XML içinde kaçış gerekir. Gösterilen dolgu sayısını saklayın, çünkü çözücünün buna ihtiyacı olur. Çıktıyı nereye gömmeyi planlıyorsunuz?

Popüler hesaplayıcılar

Tüm Hesaplayıcılar