Så använder du verktyget
- Välj Koda för att göra om text till Base32, eller Avkoda för att göra om Base32 till text.
- Välj variant. RFC 4648 är förvald och är den som används för TOTP-nycklar och i de flesta bibliotek.
- Skriv eller klistra in indatan, eller öppna en fil. Resultatet uppdateras medan du skriver.
- Kopiera resultatet eller ladda ned det som en fil.
Vad är Base32?
Base32 representerar binärdata med 32 utskrivbara tecken. Varje tecken bär 5 bitar, så varje grupp om 5 byte indata blir 8 tecken utdata. Utdatan blir ungefär 60 % större än indatan, alltså mer än med Base64, men alfabetet undviker gemener och symboler som lätt förväxlas.
Standardalfabetet i RFC 4648 använder bokstäverna A-Z och siffrorna 2-7. Siffrorna 0, 1, 8 och 9 är utelämnade så att de inte kan förväxlas med bokstäverna O, I och B. När indatans längd inte är en multipel av 5 byte fylls utdatan ut med = till en multipel av 8 tecken.
Var Base32 används
- Tvåfaktorsautentisering. Hemliga nycklar för TOTP och HOTP i autentiseringsappar (värdet
secret=i enotpauth://-länk) är Base32-strängar. - System som inte skiljer på skiftläge. Eftersom alfabetet bara har ett skiftläge klarar sig Base32 i filsystem, DNS-etiketter och e-postadresser som ignorerar skillnaden mellan versaler och gemener.
- Koder som skrivs in för hand. Licensnycklar, onion-adresser och korta identifierare använder Base32 så att de blir lättare att läsa upp och skriva in.
Om storleken spelar större roll än läsbarheten är Base64 mer kompakt. Behöver du korta identifierare utan förväxlingsbara tecken kan du jämföra Crockford Base32 och Base58.
Varianter av Base32
| Variant | Alfabet | Typisk användning |
|---|---|---|
| RFC 4648 | A-Z 2-7 | TOTP-nycklar, allmänt bruk |
| Base32hex | 0-9 A-V | Sorteringsordningen följer de råa bytena, DNSSEC NSEC3 |
| Crockford | 0-9 A-Z utom I, L, O, U | Läsbara ID:n, ULID |
| z-base-32 | gemener, omkastad ordning | Nycklar avsedda för människor, OpenPGP WKD, ZRTP |
Base32 i programkod
# Python
import base64
base64.b32encode(b'hello') # koda
base64.b32decode('NBSWY3DP') # avkoda
// Node.js saknar inbyggt stöd för Base32; använd ett paket som "hi-base32"
// Go (import "encoding/base32")
base32.StdEncoding.EncodeToString(data)
Specifikation
| Alfabet | A-Z 2-7 |
|---|---|
| Utdatastorlek | 8 tecken per 5 byte (160 %) |
| Utfyllnad | = fyller ut till en multipel av 8 tecken |
| Standard | RFC 4648 avsnitt 6 |
| Skiftlägeskänslig | Nej |
Exempel
| Indata (UTF-8) | Utdata |
|---|---|
Hello, World! | JBSWY3DPFQQFO33SNRSCC=== |
Base64.is | IJQXGZJWGQXGS4Y= |
你好 | 4S62BZNFXU====== |
Vanliga frågor
Är Base32 skiftlägeskänslig?
Alfabetet i RFC 4648 är definierat med versaler, men den här avkodaren accepterar även gemener. Använd alternativet Gemener om du behöver utdata med gemener.
Varför slutar min Base32-sträng med likhetstecken?
Likhetstecknen är utfyllnad som fyller ut det sista blocket till 8 tecken. Många system, däribland de flesta TOTP-appar, accepterar Base32 utan utfyllnad. Stäng av utfyllnaden för att ta bort dem.
Hur mycket större är Base32 än originaldatan?
Varje grupp om 5 byte blir 8 tecken, så Base32-utdata är ungefär 1,6 gånger så stor som indatan. För Base64 är faktorn ungefär 1,33.
Kan jag avkoda en TOTP-nyckel med det här verktyget?
Ja. Klistra in nyckeln på fliken Avkoda och välj Hex under Utdata som för att se nyckelns råa byte. Mellanslag i nyckeln ignoreras.