Sådan bruger du værktøjet
- Vælg Kod for at omdanne tekst eller bytes til Z85, eller Afkod for at omdanne Z85 tilbage til data.
- Til nøgler og andre binære værdier sætter du Input som til Hex ved kodning eller Output som til Hex ved afkodning.
- Skriv eller indsæt dit input, eller åbn en fil. Resultatet opdateres, mens du skriver.
- Kopiér resultatet, eller download det som en fil.
Hvad er Z85?
Z85 er specificeret i ZeroMQ RFC 32 (en specifikation fra ZeroMQ-fællesskabet, ikke en IETF-RFC). Ligesom andre Base85-kodninger omdanner den hver gruppe på 4 bytes til 5 tegn: Hver gruppe læses som et big-endian 32-bit-tal og skrives som 5 cifre i base 85 med det mest betydende ciffer først. Outputtet er 25 % større end inputtet.
Det, der adskiller Z85, er alfabetet: 0-9, a-z, A-Z og de 23 symboler .-:+=^!/*?&<>()[]{}@%$#. Det udelader begge slags anførselstegn, omvendt skråstreg, backtick, komma, semikolon, lodret streg, tilde og understregning. Alfabetet blev designet til at være sikkert i strenge i kildekode, så en Z85-værdi kan indsættes mellem anførselstegn i C, Python eller JSON helt uden escaping.
Her bruges Z85
ZeroMQ bruger Z85 til at udskrive CurveZMQ-nøgler. En offentlig eller hemmelig nøgle på 32 bytes bliver til en Z85-streng på 40 tegn, som er den form, zmq_curve_keypair() returnerer, og som socketindstillingerne til CURVE-sikkerhed accepterer. Biblioteket stiller også zmq_z85_encode() og zmq_z85_decode() til rådighed, og bindinger som pyzmq har de samme funktioner.
// C (libzmq)
char text[41]; // 32 bytes -> 40 tegn + NUL
zmq_z85_encode(text, key, 32);
# Python (pyzmq)
from zmq.utils import z85
z85.encode(bytes.fromhex('864fd26fb559f75b')) # b'HelloWorld'
Den sidste linje er testvektoren fra specifikationen.
Inputlængde: en bemærkning om dette værktøj
RFC 32 kræver, at det binære input er et multiplum af 4 bytes, og at den kodede streng er et multiplum af 5 tegn. Den definerer ingen udfyldning, og strikse implementeringer som zmq_z85_encode() afviser andre længder.
Dette værktøj accepterer også andre længder og bruger samme regel som Ascii85 og Base85: En sidste gruppe på n bytes bliver til n + 1 tegn. Det er en udvidelse, der ikke følger standarden. Output, der er lavet på denne måde, kan blive afvist af andre Z85-dekodere, så udfyld dine data til et multiplum af 4 bytes, når du har brug for kompatibilitet. CurveZMQ-nøgler er på 32 bytes og passer altid.
Specifikation
| Alfabet | 0-9 a-z A-Z .-:+=^!/*?&<>()[]{}@%$# |
|---|---|
| Outputstørrelse | 5 tegn pr. 4 bytes (125 %) |
| Udfyldning | Ingen |
| Standard | ZeroMQ RFC 32 |
| Skelner mellem store og små bogstaver | Ja |
Eksempler
| Input (UTF-8) | Output |
|---|---|
Hello, World! | nm=QNz.92jz/PV8aP |
Base64.is | lsB}Dhz^42A@ |
你好 | <H}kFRm= |
Ofte stillede spørgsmål
Hvad er forskellen på Z85 og Ascii85?
! til u, som omfatter anførselstegn og omvendt skråstreg, og har genvejen z for nulbytes. Z85 undgår tegn, der skal escapes i strenge, og har ingen genvej.Bruger Z85 udfyldning?
Nej. Specifikationen tillader kun inputlængder, der er et multiplum af 4 bytes. Dette værktøj koder andre længder med en kortere sidste gruppe, hvilket ikke er en del af standarden.
Kan jeg bruge Z85 i JSON, XML eller URL'er?
Hvor lang er en Z85-kodet CurveZMQ-nøgle?
En CurveZMQ-nøgle er på 32 bytes, så den bliver kodet til præcis 40 tegn. Hvis du vil se den rå nøgle, kan du afkode den her med Hex valgt under Output som.