Sådan bruger du værktøjet
- Vælg Kod eller Afkod. Den URL-sikre variant er forvalgt, og udfyldning er slået fra.
- Skriv eller indsæt tekst, indtast hexbytes, eller åbn en fil. Resultatet opdateres, mens du skriver.
- Slå kun Udfyldning til, hvis det modtagende system kræver =-tegn til sidst.
- Kopiér resultatet, eller download det.
Hvad er Base64URL?
Base64URL er defineret i afsnit 5 i RFC 4648 som "Base 64 Encoding with URL and Filename Safe Alphabet". Den fungerer præcis som standard-Base64 med 6 bit pr. tegn, men udskifter de to tegn, der skaber problemer i URL'er og filstier:
| Standard-Base64 | Base64URL | |
|---|---|---|
| Værdi 62 | + | - |
| Værdi 63 | / | _ |
| Udfyldning | =, påkrævet | udelades normalt |
I en URL kan + blive læst som et mellemrum, / adskiller stisegmenter, og = adskiller nøgler fra værdier i forespørgselsstrengen, så standard-Base64 skal procentkodes, før den kan indgå i et link. Base64URL kræver ingen escaping. RFC 4648 tillader, at udfyldningen udelades, når længden er kendt fra sammenhængen, og de fleste specifikationer, der bygger på Base64URL, gør netop det.
Her bruges Base64URL
- JSON Web Tokens. Header, payload og signatur i et JWT er hver især Base64URL uden udfyldning (RFC 7515). Læs et token med JWT-dekoderen.
- OAuth 2.0 PKCE.
code_challengeer SHA-256-hashen af code verifier, kodet som Base64URL uden udfyldning (RFC 7636), så den er altid 43 tegn lang. - JSON Web Keys og WebAuthn. Nøgleparametre som
n,e,xogysamt WebAuthn-challenges og credential-id'er udveksles som Base64URL. - Tokens, id'er og filnavne. Links til nulstilling, signerede URL'er og cachenøgler indeholder Base64URL uden escaping; et tilfældigt id på 16 bytes bliver til 22 tegn. På filsystemer, der ikke skelner mellem store og små bogstaver, bør du foretrække Base32, fordi Base64URL afhænger af forskellen på store og små bogstaver.
Konvertering mellem Base64 og Base64URL
Begge varianter koder de samme bytes, så konverteringen er blot en udskiftning af tegn: Erstat + med - og / med _, og fjern derefter afsluttende =. For at gå den anden vej bytter du tegnene tilbage og tilføjer =, indtil længden er et multiplum af 4. Dekoderen på denne side accepterer begge alfabeter, med eller uden udfyldning.
// Node.js 16+
Buffer.from(data).toString('base64url')
Buffer.from(str, 'base64url')
# Python (urlsafe_b64encode beholder udfyldningen)
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 - _ |
|---|---|
| Outputstørrelse | 4 tegn pr. 3 bytes (ca. 133 %) |
| Udfyldning | Valgfri, udelades normalt |
| Standard | RFC 4648 afsnit 5 |
| Skelner mellem store og små bogstaver | Ja |
Eksempler
| Input (UTF-8) | Output |
|---|---|
Hello, World! | SGVsbG8sIFdvcmxkIQ |
Base64.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
Ofte stillede spørgsmål
Er Base64URL det samme som at URL-kode en Base64-streng?
+, / og = til %2B, %2F og %3D, hvilket gør strengen længere. Base64URL bruger et andet alfabet, så der er slet ikke brug for escaping. De to former kan ikke bruges i flæng uden konvertering.Skal Base64URL have udfyldning?
urlsafe_b64encode i Python og standard-URL-koderen i Java tilføjer den. Er du i tvivl, så udelad den; denne dekoder accepterer begge former.Hvorfor afviser en standard-Base64-dekoder min Base64URL-streng?
- og _, og nogle kræver udfyldning. Byt tegnene om, og tilføj =-tegn, så længden bliver et multiplum af 4, eller afkod strengen her.Hvordan kontrollerer jeg en code challenge i PKCE?
BASE64URL(SHA256(code_verifier)) uden udfyldning. Afkod den her med Hex valgt under Output som: En korrekt værdi giver præcis 32 bytes, som du kan sammenligne med SHA-256-hashen af code verifier.