Så använder du verktyget
- Välj Koda eller Avkoda. Den URL-säkra varianten är förvald med utfyllnad avstängd.
- Skriv eller klistra in text, ange hexbyte eller öppna en fil. Resultatet uppdateras medan du skriver.
- Slå bara på utfyllnad om det mottagande systemet kräver =-tecken i slutet.
- Kopiera resultatet eller ladda ned det.
Vad är Base64URL?
Base64URL definieras i avsnitt 5 i RFC 4648 som "Base 64 Encoding with URL and Filename Safe Alphabet". Den fungerar precis som standard-Base64, med 6 bitar per tecken, men byter ut de två tecken som ställer till problem i URL:er och filsökvägar:
| Standard-Base64 | Base64URL | |
|---|---|---|
| Värde 62 | + | - |
| Värde 63 | / | _ |
| Utfyllnad | =, obligatorisk | utelämnas oftast |
I en URL kan + tolkas som ett mellanslag, / avgränsar sökvägssegment och = skiljer nycklar från värden i frågesträngen, så standard-Base64 måste procentkodas innan den kan läggas i en länk. Base64URL kan användas som den är. RFC 4648 tillåter att utfyllnaden utelämnas när längden framgår av sammanhanget, och de flesta specifikationer som bygger på Base64URL gör just det.
Var Base64URL används
- JSON Web Tokens. Huvud, nyttolast och signatur i en JWT är var för sig Base64URL utan utfyllnad (RFC 7515). Läs en token med JWT-avkodaren.
- OAuth 2.0 PKCE.
code_challengeär SHA-256-hashen av kodverifieraren (code verifier) i Base64URL-form utan utfyllnad (RFC 7636), så den är alltid 43 tecken lång. - JSON Web Keys och WebAuthn. Nyckelparametrar som
n,e,xochy, liksom utmaningar och credential-ID:n i WebAuthn, utbyts som Base64URL. - Tokens, ID:n och filnamn. Återställningslänkar, signerade URL:er och cachenycklar innehåller Base64URL utan att något behöver kodas om; ett slumpmässigt ID på 16 byte blir 22 tecken. På filsystem som inte skiljer på versaler och gemener är Base32 ett bättre val, eftersom Base64URL är skiftlägeskänslig.
Konvertera mellan Base64 och Base64URL
Båda varianterna kodar samma byte, så konverteringen är bara ett teckenbyte: ersätt + med - och / med _, och ta sedan bort avslutande =. För att gå tillbaka byter du tecknen igen och lägger till = tills längden är en multipel av 4. Avkodaren på den här sidan accepterar båda alfabeten, med eller utan utfyllnad.
// Node.js 16+
Buffer.from(data).toString('base64url')
Buffer.from(str, 'base64url')
# Python (urlsafe_b64encode behåller utfyllnaden)
base64.urlsafe_b64encode(data).rstrip(b'=')
// Go
base64.RawURLEncoding.EncodeToString(data)
// Java
Base64.getUrlEncoder().withoutPadding().encodeToString(bytes)
Specifikation
| Alfabet | A-Z a-z 0-9 - _ |
|---|---|
| Utdatastorlek | 4 tecken per 3 byte (cirka 133 %) |
| Utfyllnad | Valfri, utelämnas oftast |
| Standard | RFC 4648 avsnitt 5 |
| Skiftlägeskänslig | Ja |
Exempel
| Indata (UTF-8) | Utdata |
|---|---|
Hello, World! | SGVsbG8sIFdvcmxkIQ |
Base64.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
Vanliga frågor
Är Base64URL samma sak som att URL-koda en Base64-sträng?
+, / och = till %2B, %2F och %3D, vilket gör strängen längre. Base64URL använder ett annat alfabet, så ingenting behöver kodas om. De två formerna kan inte bytas mot varandra utan konvertering.Ska Base64URL ha utfyllnad?
urlsafe_b64encode och Javas standardkodare för URL:er lägger till den. Utelämna den om du är osäker; den här avkodaren accepterar båda formerna.Varför avvisar en vanlig Base64-avkodare min Base64URL-sträng?
- och _, och vissa kräver utfyllnad. Byt tecknen och lägg till =-tecken så att längden blir en multipel av 4, eller avkoda strängen här.Hur kontrollerar jag en PKCE code challenge?
BASE64URL(SHA256(code_verifier)) utan utfyllnad. Avkoda den här och välj Hex under Utdata som: ett korrekt värde ger exakt 32 byte, som du kan jämföra med SHA-256-hashen av verifieraren.