Dipublikasikan: 11 Desember 2025
Terakhir diperbarui: 11 Desember 2025
Dipublikasikan: 11 Desember 2025
Terakhir diperbarui: 11 Desember 2025
Raymond Kelvin Nando — B64URL merupakan variasi dari Base64 yang dirancang secara khusus untuk penggunaan dalam URL, parameter HTTP, token autentikasi, serta lingkungan yang tidak mengizinkan karakter khusus seperti + dan /. B64URL memperkenalkan dua substitusi karakter utama guna memastikan bahwa hasil encoding aman digunakan dalam konteks URL tanpa memerlukan escape tambahan. Teknik ini banyak digunakan dalam JWT, OAuth, OpenID Connect, web API, dan sistem identitas modern.
Daftar Isi
B64URL adalah metode encoding yang memodifikasi karakter standar Base64 agar kompatibel dengan URL dan sistem yang membatasi karakter tertentu. Perbedaan utamanya adalah:
Karakter Base64 standar:
Diganti dengan B64URL:
Secara prinsip, B64URL tetap memetakan tiga byte input menjadi empat karakter ASCII, namun menggunakan set karakter yang aman untuk URL. Encoding ini sangat penting untuk sistem web modern yang membutuhkan tokenisasi aman tanpa percent-encoding.
Tujuan utama B64URL:
B64URL diperkenalkan sebagai bagian dari RFC 4648 pada pertengahan 2000-an, saat internet mulai banyak menggunakan API, SSO, dan layanan berbasis token. Base64 tradisional dianggap kurang cocok untuk URL dan form web karena karakter “+” dan “/” menyebabkan masalah pengkodean.
Ketika JWT dan OAuth 2.0 berkembang pesat di tahun 2010-an, B64URL menjadi standar de facto untuk encoding bagian-bagian token seperti header, payload, dan signature. Framework keamanan seperti OpenID Connect, SAML 2.0 modern, dan WebAuthn juga menggunakan varian B64URL.
Hingga kini, B64URL dianggap salah satu encoding paling fundamental untuk sistem web, kriptografi modern, dan transport token lintas layanan.
Encoding B64URL mengikuti langkah utama Base64, namun dengan modifikasi karakter dan penghapusan padding.
Input dibagi per 3 byte → 24 bit → dibagi menjadi 4 grup 6-bit.
Tabel Base64URL:
A-Z → 0–25
a-z → 26–51
0–9 → 52–61
Base64: + / =
B64URL: – _ (tanpa padding)
Contoh:
+/ → -_
Jika Base64 menghasilkan satu atau dua karakter “=”, B64URL menghapusnya.
Penerima harus menghitung padding hilang berdasarkan panjang string.
Decoder menambahkan kembali padding “=” jika diperlukan agar panjang byte menjadi kelipatan 4.
Header.jwt = B64URL(header JSON)
Payload.jwt = B64URL(payload JSON)
Signature.jwt = HMAC → B64URL
B64URL bukan enkripsi. Encoding ini hanya transformasi representasi.
B64URL dapat digunakan untuk mengirim hash, signature, atau metadata binari dalam format teks.
Input: hello
Base64 standar: aGVsbG8=
B64URL: aGVsbG8
Input: foo+bar/baz
Base64 standar: Zm9vK2Jhci9iYXo=
B64URL: Zm9vK2Jhci9iYXo
(Karakter + dan / berasal dari input, bukan encoding)
Input bytes: 0xFF 0xEE 0xDD
Base64: /+7d
B64URL: _-7d
{“alg”:”HS256″,”typ”:”JWT”}
Base64: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
B64URL: sama, karena hasil tidak mengandung + atau /
Input: hi
Base64: aGk=
B64URL: aGk
Input: aGk
Tambahkan “=” → aGk=
Decode → hi
Input B64URL: AAEC_-8
Substitusi → AAEC/+8
Decode → bytes: 00 01 02 FF F8
Kelebihan:
Kekurangan: