B64URL

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.

Pengertian B64URL (Base64 URL-Safe Encoding)

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:

  • _ (underscore)
    • (minus)
  • padding “=” sering dihilangkan

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:

  • Menghilangkan karakter yang perlu di-escape di URL.
  • Memastikan interoperabilitas lintas platform.
  • Meningkatkan kesederhanaan parsing di server dan browser.
  • Mempermudah penyusunan token autentikasi berbasis JSON.

Sejarah Perkembangan 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.

Orang lain juga membaca :  A-XDR

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.

Prinsip Dasar dan Metode B64URL

Encoding B64URL mengikuti langkah utama Base64, namun dengan modifikasi karakter dan penghapusan padding.

1. Pembagian Byte

Input dibagi per 3 byte → 24 bit → dibagi menjadi 4 grup 6-bit.

2. Pemetaan Karakter

Tabel Base64URL:
A-Z → 0–25
a-z → 26–51
0–9 → 52–61

  • → 62
    _ → 63

3. Substitusi Karakter

Base64: + / =
B64URL: – _ (tanpa padding)

Contoh:
+/ → -_

4. Penghilangan Padding

Jika Base64 menghasilkan satu atau dua karakter “=”, B64URL menghapusnya.
Penerima harus menghitung padding hilang berdasarkan panjang string.

5. Dekode

Decoder menambahkan kembali padding “=” jika diperlukan agar panjang byte menjadi kelipatan 4.

6. Implementasi pada JWT

Header.jwt = B64URL(header JSON)
Payload.jwt = B64URL(payload JSON)
Signature.jwt = HMAC → B64URL

7. Keamanan

B64URL bukan enkripsi. Encoding ini hanya transformasi representasi.

8. Binary Compatibility

B64URL dapat digunakan untuk mengirim hash, signature, atau metadata binari dalam format teks.

Contoh Input → Output B64URL

Contoh 1: Enkripsi string sederhana

Input: hello

Base64 standar: aGVsbG8=
B64URL: aGVsbG8

Contoh 2: String dengan karakter khusus

Input: foo+bar/baz

Base64 standar: Zm9vK2Jhci9iYXo=
B64URL: Zm9vK2Jhci9iYXo
(Karakter + dan / berasal dari input, bukan encoding)

Contoh 3: Binary input

Input bytes: 0xFF 0xEE 0xDD
Base64: /+7d
B64URL: _-7d

Contoh 4: JWT header

{“alg”:”HS256″,”typ”:”JWT”}
Base64: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
B64URL: sama, karena hasil tidak mengandung + atau /

Orang lain juga membaca :  Affine Cipher

Contoh 5: Tanpa padding

Input: hi
Base64: aGk=
B64URL: aGk

Contoh 6: Dekode dengan padding otomatis

Input: aGk
Tambahkan “=” → aGk=
Decode → hi

Contoh 7: Dekode binary panjang

Input B64URL: AAEC_-8
Substitusi → AAEC/+8
Decode → bytes: 00 01 02 FF F8

Kelebihan & Kekurangan B64URL

Kelebihan:

  • Sepenuhnya URL-safe.
  • Tidak memerlukan escape.
  • Cocok untuk sistem web, cookie, query parameter, REST API.
  • Menghemat karakter karena padding dihilangkan.
  • Digunakan secara luas di JWT, OAuth, OpenID, WebAuthn.
  • Kompatibel dengan hampir semua platform.
  • Sederhana dan deterministik.

Kekurangan:

  • Tidak kompatibel langsung dengan Base64 biasa tanpa adaptasi karakter.
  • Perlunya penanganan padding manual pada implementasi tertentu.
  • Tidak menyediakan keamanan atau enkripsi.
  • Tidak efisien untuk data yang sangat besar.
  • Rentan salah implementasi jika substring token dipotong secara salah.
  • Dapat menyebabkan kebingungan antara Base64 dan B64URL jika tidak didokumentasikan.

Referensi

  • Josefsson, S. (2006). The Base16, Base32, and Base64 Data Encodings. RFC 4648.
  • Jones, M., Bradley, J., & Sakimura, N. (2015). JSON Web Token (JWT). IETF.
  • Hardt, D. (2012). The OAuth 2.0 Authorization Framework. IETF.
  • Kearney, P. (2020). Web Security and Tokenization Techniques.
  • Rescorla, E. (2018). Web Cryptography Overview.

Citation

Previous Article

B-Tree Serialization Encoding

Next Article

Baudot

Citation copied!