Base32- / Base58-muunnin

Koodaa teksti tai dekoodaa koodatut merkkijonot seitsemässä järjestelmässä: RFC 4648 Base32 (A-Z2-7), base32hex (0-9A-V), Crockford Base32, z-base-32, Bitcoin Base58, Flickr Base58 ja Ripple Base58. Muuntimen alla on myös erillinen Base58Check-generaattori ja tarkistin (versiotavu + kaksinkertainen SHA-256-tarkistussumma). Teksti käsitellään UTF-8-tavuina. Lisäksi: Base64 | Ascii85 | Heksateksti.
Kaikki käsittely tapahtuu paikallisesti selaimessasi — tietojasi ei koskaan lähetetä palvelimelle.
Miten se toimii: Jokainen merkki muunnetaan UTF-8-tavuiksi, minkä jälkeen kukin aakkosto pakkaa nuo tavut omaan tulostettavaan aakkostoonsa.
Järjestelmä:
Miten se toimii: Koodattu merkkijono dekoodataan takaisin UTF-8-tavuiksi ja näytetään tekstinä. Välilyönnit ja lopun = -täytteet ohitetaan; virheelliset merkit ilmoitetaan niiden paikan kanssa.
Järjestelmä:
Ctrl+Enter syötteessä suorittaa aktiivisen tilan.
Valitse Koodaa tai Dekoodaa, valitse järjestelmä ja klikkaa toimintopainiketta. Kaikki käsittely pysyy selaimessasi.

Base58Check-koodain: Versiotavu (heksa): Hyötykuorma (heksa):
Base58Check-tarkistin: Osoite tai merkkijono:
Base58Check on Bitcoin-osoitemuoto: yksi versiotavu, hyötykuorma ja sitten SHA-256:n ensimmäiset neljä tavua, sovellettuna kahdesti versiotavuun ja hyötykuormaan yhdessä. Koodaus kirjoittaa merkkijonon; Tarkistus lukee sen takaisin ja ilmoittaa, mikä tavu on väärin, kun tarkistussumma ei täsmää.
Tietoa kustakin aakkostosta:
Base32 (RFC 4648) — klassinen kirjainkoosta riippumaton aakkosto A-Z 2-7; 8 tavua muuttuu 13 merkiksi ja täytteeksi. Laajalti käytössä HOTP/TOTP-salaisuuksissa, DNSSECissä ja tiedostojen tarkistussummissa. Valinnainen =-täyte lisätään, ellet kytke sitä pois.
Base32 Hex — laajennettu aakkosto 0-9 A-V, joka järjestyy luonnollisesti leksikografisessa järjestyksessä ja on kätevä, kun koodattua arvoa käytetään myös heksamaisena tunnisteena.
Base58 (Bitcoin) — Base64 ilman merkkejä 0 O I l + /, joten tulos ei koskaan sisällä epäselviä merkkejä. Tätä aakkostoa käytetään Bitcoin-osoitteissa. Johtavat nollatavut muuttuvat numeroksi 1.
Base58 (Flickr) — Flickrin lyhyiden URL-osoitteiden aakkosto, joka on kirjainkokoherkkä vastakkaisessa järjestyksessä: numerot, pienet kirjaimet, sitten isot kirjaimet.
Crockford Base32 — numerot ja yksiselitteiset kirjaimet 0-9 A-Z, joista on jätetty pois I, L, O ja U. Dekoodaus hyväksyy myös I- ja L-kirjaimet numeroina 1, O-kirjaimen numerona 0, pienet kirjaimet ja tavuviivat koristeena. Valinnainen modulo 37 -tarkistusmerkki voidaan liittää loppuun.
z-base-32 — sama viiden bitin ryhmittely kuin RFC 4648 Base32:ssa, aakkosto järjestetty uudelleen niin, että ihmiset kirjoittavat useimmin tarvittavat merkit helpoimmin. Ei täytettä eikä tarkistusmerkkiä.
Base58 (Ripple / XRP) — sama 58 merkkiä kolmannessa järjestyksessä, jota XRP Ledger käyttää. Sen ensimmäinen merkki on r, minkä vuoksi Ripple-osoitteet alkavat tuolla kirjaimella.
Base58Check — Base58-merkkijono, jonka hyötykuormassa on neljä tavua tarkistussummaa, joten väärin kirjoitettu osoite voidaan hylätä sen sijaan, että rahat lähetettäisiin hiljaa väärään paikkaan. Muuntimen alla on erillinen generaattori ja tarkistin.
Mitä Base32 ja Base58 ovat?

Ne ovat kaksi vastausta yhteen kysymykseen: kanava, joka kuljettaa tekstiä, pyydetään kuljettamaan tavuja. Base32 ja Base58 eivät ole salausta eivätkä tiivistämistä — ne eivät piilota mitään eivätkä lyhennä mitään. Ne kirjoittavat tavujonon uudelleen kiinteällä joukolla luettavia merkkejä, ja kuka tahansa, joka tietää, mitä joukkoa käytettiin, voi kääntää sen suoraan takaisin. Ainoa syy suosia toista on se, mitä vastaanottava pää merkeillä tekee.

Kaksi perhettä tekee tuon uudelleenkirjoituksen täysin eri tavoin, ja ero selittää lähes jokaisen yllätyksen tällä sivulla:

  • Bittipakkaus — Base32, Base32 Hex, Crockford Base32, z-base-32. Tavut leikataan kiinteisiin ryhmiin, ja jokainen viisi bittiä muuttuu yhdeksi merkiksi. Tulosteen pituus on ennustettavissa syötteen pituudesta, ja viimeinen, osittain täytetty ryhmä merkitään täytemerkeillä tai jätetään lyhyeksi.
  • Suuren luvun muunnos — kaikki Base58-taulukot. Koko tavujono luetaan yhtenä valtavana lukuna kantaluvussa 256 ja kirjoitetaan uudelleen kantaluvussa 58. Ryhmiä tai täytettä ei ole; pituus ei jakaudu mihinkään, ja jokainen johtava nollatavu muuttuu yhdeksi johtavaksi nollamerkiksi.
Minne kuusi dataa kantavaa bittiä menevät: Base32 käyttää viittä bittiä merkkiä kohden, joten se tarvitsee kahdeksan merkkiä jokaista viittä syötetavua kohden — noin 60% enemmän. Base58 käyttää noin 5,86 bittiä merkkiä kohden, joten se on noin 37% suurempi. Base64 mahtuu kuuteen bittiin merkkiä kohden ja on 33%. Suuremmat aakkostot ovat lyhyempiä ja vaikeampia lukea ääneen — juuri sen kompromissin kukin tekee.
Tämän sivun seitsemän aakkostoa

Jokainen aakkosto on tulostettu kokonaan kuvaamisen sijaan, koska kaksi työkalua, jotka tulostavat eri merkit saman nimen alla, eivät ole samaa mieltä keskenään nimestä riippumatta. RFC 4648 -rivit ovat normatiivisia; Crockford- ja z-base-32-rivit seuraavat formaatin tekijän julkaisemaa; kolme Base58-riviä ovat laajalle levinneitä konventioita eikä standardeja, minkä vuoksi ne on lueteltu erikseen.

Crockford Base32 ja modulo 37 -tarkistusmerkki

Aakkosto jättää pois I, L, O ja U, jotta mikään merkki ei voi lukeutua toiseksi. Jäljelle jäävä ei välitä kirjainkoosta sisään tullessa: i ja l luetaan numeroksi 1, o numeroksi 0, ja tavuviivat ovat olemassa vain merkkijonon lukemisen helpottamiseksi. Lisäksi formaatti määrittelee valinnaisen tarkistusmerkin, joka on merkkijonon arvo luettuna kantaluvun 32 lukuna, otettuna modulo 37, ja kirjoitettuna viidellä ylimääräisellä symbolilla arvoille 32-36.

Tarkistusmerkki lasketaan merkkijonosta, ei tavuista: koska enkooderi täydentää viimeisen ryhmän nollilla, samojen merkkien dekoodaus palaa aina samaan arvoon. Siksi taulukon tarkistusarvon voi laskea käsin pelkästä koodatusta sarakkeesta. Viisi ylimääräistä symbolia ovat *, ~, $, = ja U arvoille 32, 33, 34, 35 ja 36, joten tarkistusmerkki ei ole aina numero tai kirjain.

z-base-32

z-base-32 säilyttää RFC 4648 Base32:n viiden bitin pakkauksen ja muuttaa vain kolmenkymmenenkahden merkin järjestystä. Järjestys on valittu niin, että merkit, jotka ihminen todennäköisimmin joutuu kirjoittamaan muistiin, ovat helpoimmin kirjoitettavia ja vaikeimmin sekoitettavia. Siinä ei ole täytettä, joten lukijan on tiedettävä, kuinka monta symbolia arvon odotetaan sisältävän; se on hinta muodosta, joka on suunniteltu luettavaksi ensin käsin.

Base58Check: yksi versiotavu, hyötykuorma, neljä tavua tarkistussummaa

Pelkkä Base58 ei pysty erottamaan väärin kirjoitettua merkkijonoa oikeasta, koska lähes mikä tahansa yhdistelmä sen viidestäkymmenestäkahdeksasta merkistä on kelvollinen luku. Base58Check korjaa tämän kääräisemällä datan: yksi versiotavu, sitten hyötykuorma, sitten SHA-256:n ensimmäiset neljä tavua, sovellettuna kahdesti kahteen ensimmäiseen osaan. Vastaanottava ohjelma laskee nuo neljä tavua uudelleen ja hylkää merkkijonon, jos ne eroavat. Versiotavu kertoo lompakolle, katsotaanko maksuosoitetta, skriptiosoitetta vai yksityistä avainta.

Muuntimen alla oleva generaattori ottaa versiotavun ja hyötykuorman heksadesimaalina ja kirjoittaa Base58Check-merkkijonon; tarkistin lukee sen takaisin, erottaa neljä tarkistustavua, laskee ne uudelleen ja ilmoittaa sekä löydetyn että odotetun. Väärä tarkistussumma tarkoittaa, että merkkijono on kirjoitettu väärin tai muutettu — se ei koskaan tarkoita, että hyötykuorma itsessään on väärin, koska hyötykuormaa ei koskaan tulkita.

Yleisiä väärinkäsityksiä
  • "Base64 on salausta." Ei ole. Avainta tai salaisuutta ei ole; kuka tahansa voi kääntää tuloksen. Base32 ja Base58 ovat samassa asemassa, eikä arvon vieminen kaikkien kolmen läpi lisää suojaa.
  • "Base58-merkkijono on Bitcoin-osoite." Vain silloin, kun se läpäisee myös Base58Check-tarkistussumman ja kantaa vastaanottavan ohjelmiston tunnistaman versiotavun. Base58-merkkijonoja esiintyy monissa muissa paikoissa, myös yksinkertaisissa tunnisteissa ilman mitään tarkistussummaa.
  • "Kolme Base58-aakkostoa ovat keskenään vaihdettavissa." Ne käyttävät samoja viittäkymmentäkahdeksaa merkkiä kolmessa eri järjestyksessä, joten samat tavut tuottavat kolme eri merkkijonoa. Työkalulle on kerrottava, mitä käyttää, ja tämä sivu kertoo aina, mitä se käytti.
  • "Täyte kuuluu arvoon." =-merkit merkitsevät vain viimeistä ryhmää. Kaksi Base32-merkkijonoa, jotka eroavat vain täytteessään, kuvaavat samat tavut, minkä vuoksi dekooderi hyväksyy merkkijonon, josta täyte on leikattu pois.
  • "Mitkä tahansa merkit käyvät." Jokainen aakkosto on kiinteä joukko. Sen ulkopuolisella merkillä ei ole arvoa, joten dekooderi pysähtyy ja nimeää merkin ja sen paikan arvaamisen sijaan.
Usein esitettyjä kysymyksiä

Miksi Base32 käyttää merkkejä 2-7 eikä 0-9? Koska RFC 4648 valitsi aakkoston pysyäkseen verkkotunnuksessa sallituissa merkeissä ja jotta sen ääneen lukeminen on helppoa. Base32 Hex käyttää 0-9 A-V silloin, kun luonnollinen järjestäminen on tärkeämpää.

Miksi Base58-merkkijono alkaa usein merkillä 1? Jokainen syötteen johtava nollatavu muuttuu yhdeksi johtavaksi 1:ksi (Bitcoin- ja Flickr-aakkoston ensimmäinen merkki). Versiotavu 0x00 on yksi nollatavu, joten useimmat Bitcoinin pääverkon osoitteet alkavat tasan yhdellä 1:llä.

Mitä Esimerkki-painike lataa? Järjestelmän ja tällä hetkellä näkyvän suunnan kuuluvan esimerkin, ei koskaan kiinteää tekstiä. Enkooderille annetaan järjestelmän oman esimerkin teksti — RFC 4648:n osion 10 vektorit Base32:lle ja Base32 Hexille, Crockfordin 12345 ja yllä tulostetut z-base-32-rivit — ja dekooderille annetaan valitun aakkoston koodattu merkkijono, mikä tekee esimerkistä käyttökelpoisen molempiin suuntiin. Kolme Base58-riviä kantavat tarkoituksella saman tekstin, joten vaihdettaessa järjestelmää ja painettaessa Esimerkkiä uudelleen näkyy kolme järjestystä samoista viidestäkymmenestäkahdeksasta merkistä vierekkäin. Kun Crockford-tarkistusmerkki on valittu, dekooderille annetaan arvo symboli lopussa, mikä on ainoa tapa nähdä tarkistimen hyväksyvän sellaisen.

Lähetetäänkö tietojani minnekään? Ei. Jokainen muunnos tapahtuu tässä selainvälilehdessä, eikä sivulla ole minkäänlaisia verkkoyhteyksiä. Siksi se toimii myös, kun tiedosto avataan suoraan levyltä.

Mitä salaisuudelle kannattaa käyttää? TOTP- ja HOTP-todennussovellusten salaisuudet ovat yleensä Base32 RFC 4648 -aakkostossa, koska salaisuus on kirjoitettava käsin. Käytä sitä, mitä vastaanottava ohjelmisto pyytää, äläkä koskaan luota koodaukseen itseensä salassapidossa.