Zo gebruik je het
- Kies Coderen om tekst of bytes naar Z85 om te zetten, of Decoderen om Z85 terug te zetten naar gegevens.
- Zet voor sleutels en andere binaire waarden bij het coderen Invoer als op Hex, of bij het decoderen Uitvoer als op Hex.
- Typ of plak je invoer of gebruik Bestand openen. Het resultaat wordt bijgewerkt terwijl je typt.
- Kopieer het resultaat met Kopiëren of sla het met Downloaden op als bestand.
Wat is Z85?
Z85 is vastgelegd in ZeroMQ RFC 32 (een specificatie van de ZeroMQ-gemeenschap, geen RFC van de IETF). Net als andere Base85-coderingen zet het elke 4 bytes om in 5 tekens: elke groep wordt gelezen als een big-endian 32-bitsgetal en geschreven als 5 cijfers in grondtal 85, het meest significante eerst. De uitvoer is 25% groter dan de invoer.
Wat Z85 onderscheidt, is het alfabet: 0-9, a-z, A-Z en de 23 symbolen .-:+=^!/*?&<>()[]{}@%$#. Beide aanhalingstekens, de backslash, de backtick, de komma, de puntkomma, het verticale streepje, de tilde en het onderstrepingsteken zijn weggelaten. Het alfabet is zo ontworpen dat het veilig is in strings in broncode, zodat je een Z85-waarde zonder enige escaping tussen aanhalingstekens kunt plakken in C, Python of JSON.
Waar Z85 wordt gebruikt
ZeroMQ gebruikt Z85 om CurveZMQ-sleutels weer te geven. Een publieke of geheime sleutel van 32 bytes wordt een Z85-string van 40 tekens. Dat is de vorm die zmq_curve_keypair() teruggeeft en die de socketopties voor CURVE-beveiliging accepteren. De bibliotheek biedt ook zmq_z85_encode() en zmq_z85_decode(), en bindings zoals pyzmq hebben dezelfde functies.
// C (libzmq)
char text[41]; // 32 bytes -> 40 tekens + NUL
zmq_z85_encode(text, key, 32);
# Python (pyzmq)
from zmq.utils import z85
z85.encode(bytes.fromhex('864fd26fb559f75b')) # b'HelloWorld'
De laatste regel is de testvector uit de specificatie.
Invoerlengte: een opmerking over deze tool
RFC 32 vereist dat de binaire invoer een veelvoud van 4 bytes is en de gecodeerde string een veelvoud van 5 tekens. Er is geen opvulling gedefinieerd, en strikte implementaties zoals zmq_z85_encode() weigeren andere lengtes.
Deze tool accepteert ook andere lengtes en gebruikt daarvoor dezelfde regel als Ascii85 en Base85: een laatste groep van n bytes wordt n + 1 tekens. Dat is een niet-standaard uitbreiding. Uitvoer die zo is gemaakt, kan door andere Z85-decoders worden geweigerd, dus vul je gegevens aan tot een veelvoud van 4 bytes als je compatibiliteit nodig hebt. CurveZMQ-sleutels zijn 32 bytes en passen altijd.
Specificatie
| Alfabet | 0-9 a-z A-Z .-:+=^!/*?&<>()[]{}@%$# |
|---|---|
| Uitvoergrootte | 5 tekens per 4 bytes (125%) |
| Opvulling | Geen |
| Standaard | ZeroMQ RFC 32 |
| Hoofdlettergevoelig | Ja |
Voorbeelden
| Invoer (UTF-8) | Uitvoer |
|---|---|
Hello, World! | nm=QNz.92jz/PV8aP |
Base64.is | lsB}Dhz^42A@ |
你好 | <H}kFRm= |
Veelgestelde vragen
Wat is het verschil tussen Z85 en Ascii85?
! tot u, waarin aanhalingstekens en de backslash voorkomen, en heeft een z-afkorting voor nulbytes. Z85 vermijdt tekens die in strings ge-escapet moeten worden en heeft geen afkorting.Gebruikt Z85 opvulling?
Nee. De specificatie staat alleen invoerlengtes toe die een veelvoud van 4 bytes zijn. Deze tool codeert andere lengtes met een kortere laatste groep, wat geen deel uitmaakt van de standaard.
Kan ik Z85 gebruiken in JSON, XML of URL's?
Hoe lang is een CurveZMQ-sleutel in Z85?
Een CurveZMQ-sleutel is 32 bytes en wordt dus gecodeerd als precies 40 tekens. Wil je de ruwe sleutel zien, decodeer hem hier dan met Uitvoer als op Hex.