Nasıl kullanılır
- "Kodla" veya "Kodu çöz" seçeneğini seçin. URL güvenli varyant, dolgu kapalı olarak önceden seçilidir.
- Metin yazın veya yapıştırın, onaltılık bayt girin ya da bir dosya açın. Sonuç siz yazarken güncellenir.
- "Dolgu" seçeneğini yalnızca alıcı sistem sonda = işaretleri gerektiriyorsa açın.
- Sonucu kopyalayın veya indirin.
Base64URL nedir?
Base64URL, RFC 4648'in 5. bölümünde "Base 64 Encoding with URL and Filename Safe Alphabet" (URL ve dosya adı güvenli alfabeyle Base64 kodlaması) olarak tanımlanır. Karakter başına 6 bit kullanarak tıpkı standart Base64 gibi çalışır, ancak URL'lerde ve dosya yollarında sorun çıkaran iki karakteri değiştirir:
| Standart Base64 | Base64URL | |
|---|---|---|
| Değer 62 | + | - |
| Değer 63 | / | _ |
| Dolgu | =, zorunlu | genellikle kullanılmaz |
Bir URL'de + boşluk olarak okunabilir, / yol bölümlerini ayırır ve = sorgu anahtarlarını değerlerinden ayırır; bu nedenle standart Base64 bir bağlantıya eklenmeden önce yüzde kodlamasından geçirilmelidir. Base64URL ise hiçbir kaçış gerektirmez. RFC 4648, uzunluk bağlamdan bilindiğinde dolgunun atlanmasına izin verir ve Base64URL üzerine kurulu çoğu belirtim de tam olarak bunu yapar.
Base64URL nerelerde kullanılır?
- JSON Web Token. Bir JWT'nin başlık, yük ve imza bölümlerinin her biri dolgusuz Base64URL biçimindedir (RFC 7515). Bir token'ı okumak için JWT Çözücü aracını kullanın.
- OAuth 2.0 PKCE.
code_challenge, kod doğrulayıcının (code verifier) SHA-256 özetinin dolgusuz Base64URL biçimidir (RFC 7636); bu nedenle her zaman 43 karakter uzunluğundadır. - JSON Web Key ve WebAuthn.
n,e,xveygibi anahtar parametreleri ile WebAuthn sınamaları (challenge) ve kimlik bilgisi ID'leri (credential ID) Base64URL olarak aktarılır. - Token'lar, kimlikler ve dosya adları. Sıfırlama bağlantıları, imzalı URL'ler ve önbellek anahtarları Base64URL değerlerini kaçış uygulamadan taşır; 16 baytlık rastgele bir kimlik 22 karaktere dönüşür. Büyük/küçük harf duyarsız dosya sistemlerinde Base32 tercih edin, çünkü Base64URL büyük/küçük harf ayrımına dayanır.
Base64 ile Base64URL arasında dönüştürme
Her iki varyant da aynı baytları kodlar; bu nedenle dönüştürme bir karakter değişiminden ibarettir: + yerine -, / yerine _ koyun, ardından sondaki = işaretlerini kaldırın. Geri dönmek için karakterleri tekrar değiştirin ve uzunluk 4'ün katı olana kadar = ekleyin. Bu sayfadaki kod çözücü, dolgulu veya dolgusuz olarak her iki alfabeyi de kabul eder.
// Node.js 16+
Buffer.from(data).toString('base64url')
Buffer.from(str, 'base64url')
# Python (urlsafe_b64encode dolguyu korur)
base64.urlsafe_b64encode(data).rstrip(b'=')
// Go
base64.RawURLEncoding.EncodeToString(data)
// Java
Base64.getUrlEncoder().withoutPadding().encodeToString(bytes)
Teknik özellikler
| Alfabe | A-Z a-z 0-9 - _ |
|---|---|
| Çıktı boyutu | 3 bayt başına 4 karakter (yaklaşık %133) |
| Dolgu | İsteğe bağlı, genellikle kullanılmaz |
| Standart | RFC 4648, bölüm 5 |
| Büyük/küçük harf duyarlı | Evet |
Örnekler
| Girdi (UTF-8) | Çıktı |
|---|---|
Hello, World! | SGVsbG8sIFdvcmxkIQ |
Base64.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
Sıkça sorulan sorular
Base64URL, bir Base64 dizesine URL kodlaması uygulamakla aynı şey mi?
+, / ve = karakterlerini %2B, %2F ve %3D hâline getirir ve dizeyi uzatır. Base64URL farklı bir alfabe kullandığından hiçbir kaçış gerekmez. İki biçim, dönüştürme yapılmadan birbirinin yerine kullanılamaz.Base64URL dolgu içermeli mi?
urlsafe_b64encode fonksiyonu ve Java'nın varsayılan URL kodlayıcısı ise dolgu ekler. Emin değilseniz dolguyu atlayın; bu kod çözücü her iki biçimi de kabul eder.Standart bir Base64 kod çözücü neden Base64URL dizemi reddediyor?
- ve _ karakterlerini kabul etmez, bazıları ise dolgu gerektirir. Karakterleri değiştirin ve uzunluğu 4'ün katı yapmak için = işaretleri ekleyin ya da dizenin kodunu burada çözün.Bir PKCE code challenge değerini nasıl kontrol ederim?
BASE64URL(SHA256(code_verifier)) değeridir. Onaltılık çıktıyla burada kodunu çözün: doğru bir değer tam olarak 32 bayt verir ve bunu doğrulayıcının (verifier) SHA-256 özetiyle karşılaştırabilirsiniz.