Hasil Decode
Hasil Encode
Tentang Base64
Base64 adalah skema pengkodean yang menggunakan karakter ASCII 7-bit yang dapat dicetak. Ini terutama digunakan dalam email untuk mentransfer data 8-bit melalui jalur data 7-bit.
Dalam Base64, data dibagi menjadi 6 bit masing-masing dan dikonversi menjadi karakter alfanumerik (A-Z, a-z, 0-9) dan simbol (+, /). Konversi dilakukan setiap 4 karakter, dan jika kurang dari 4 karakter di akhir, dipadding dengan tanda sama dengan (=).
Selain itu, RFC 1421 (PEM: Privacy-Enhanced Mail) menetapkan baris baru setiap 64 karakter, dan RFC 2045 (MIME) setiap 76 karakter.
Tabel konversi ke karakter Base64 adalah sebagai berikut.
| 6 bit data | Karakter Base64 |
|---|---|
| 000000 | A |
| 000001 | B |
| 000010 | C |
| 000011 | D |
| 000100 | E |
| 000101 | F |
| 000110 | G |
| 000111 | H |
| 001000 | I |
| 001001 | J |
| 001010 | K |
| 001011 | L |
| 001100 | M |
| 001101 | N |
| 001110 | O |
| 001111 | P |
| 010000 | Q |
| 010001 | R |
| 010010 | S |
| 010011 | T |
| 010100 | U |
| 010101 | V |
| 010110 | W |
| 010111 | X |
| 011000 | Y |
| 011001 | Z |
| 011010 | a |
| 011011 | b |
| 011100 | c |
| 011101 | d |
| 011110 | e |
| 011111 | f |
| 100000 | g |
| 100001 | h |
| 100010 | i |
| 100011 | j |
| 100100 | k |
| 100101 | l |
| 100110 | m |
| 100111 | n |
| 101000 | o |
| 101001 | p |
| 101010 | q |
| 101011 | r |
| 101100 | s |
| 101101 | t |
| 101110 | u |
| 101111 | v |
| 110000 | w |
| 110001 | x |
| 110010 | y |
| 110011 | z |
| 110100 | 0 |
| 110101 | 1 |
| 110110 | 2 |
| 110111 | 3 |
| 111000 | 4 |
| 111001 | 5 |
| 111010 | 6 |
| 111011 | 7 |
| 111100 | 8 |
| 111101 | 9 |
| 111110 | + |
| 111111 | / |
Sebagai contoh, jika Anda mengonversi "Hello" dengan Base64:
1. Ubah ke representasi biner.
01001000 01100101 01101100 01101100 01101111 (Untuk US-ASCII / UTF-8)
2. Bagi setiap 6 bit. Jika kurang dari 6 bit, padding dengan "0" di akhir.
010010 000110 010101 101100 011011 000110 111100
3. Konversi ke karakter menggunakan tabel konversi. Konversi setiap 4 karakter, dan jika kurang dari 4 karakter, padding dengan "=" di akhir.
SGVs bG8=
4. Gabungkan semua karakter untuk mendapatkan hasil konversi Base64.
SGVsbG8=
Format Header Pesan MIME Email (RFC 2047)
DenCode juga mendukung dekode format header pesan MIME (RFC 2047) seperti di bawah ini. Format ini digunakan ketika subjek atau tujuan email berisi karakter non-ASCII.
Subject: =?UTF-8?B?44K144Oz44OX44Or?=
Hasil setelah dekode adalah sebagai berikut.
Subject: サンプル
JSON Web Token (RFC 7519)
JSON Web Token (JWT) adalah format token yang merepresentasikan data JSON secara ringkas menggunakan encoding Base64url. Format ini banyak digunakan untuk autentikasi dan otorisasi dalam aplikasi web dan telah distandarkan dalam RFC 7519.
JWT terdiri dari tiga elemen yang dipisahkan oleh titik (.).
<Header>.<Payload>.<Signature>
Peran masing-masing elemen adalah sebagai berikut.
| Elemen | Deskripsi |
|---|---|
| Header | Objek JSON yang berisi metadata seperti jenis token (typ) dan algoritma tanda tangan (alg) |
| Payload | Objek JSON yang berisi informasi seperti ID pengguna dan waktu kedaluwarsa |
| Signature | Data tanda tangan yang digunakan untuk mendeteksi pemalsuan header dan payload |
Header dan payload masing-masing dienkode dalam Base64url. Base64url mengganti "+" dengan "-" dan "/" dengan "_", serta menghilangkan padding "=" dibandingkan dengan Base64 standar (RFC 4648). Hal ini memungkinkan penyertaan yang aman dalam URL dan header HTTP.
Misalnya, mendekode JWT berikut menghasilkan header dan payload dalam format JSON.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
Field (klaim) utama yang terdapat dalam header dan payload adalah sebagai berikut.
| Field | Nama | Deskripsi |
|---|---|---|
| alg | Algorithm | Algoritma yang digunakan untuk penandatanganan atau enkripsi (mis. HS256, RS256, ES256) |
| typ | Type | Jenis token (biasanya "JWT") |
| cty | Content Type | Tipe konten payload ("JWT" untuk JWT bersarang) |
| kid | Key ID | Pengidentifikasi kunci yang digunakan untuk verifikasi tanda tangan |
| jku | JWK Set URL | URL yang merujuk ke JWK Set yang digunakan untuk verifikasi tanda tangan |
| x5u | X.509 URL | URL yang merujuk ke rantai sertifikat X.509 yang digunakan untuk verifikasi tanda tangan |
| x5t | X.509 Certificate SHA-1 Thumbprint | Sidik jari SHA-1 dari sertifikat X.509 yang digunakan untuk verifikasi tanda tangan |
| Field | Nama | Deskripsi |
|---|---|---|
| iss | Issuer | Penerbit token |
| sub | Subject | Subjek token (mis. ID pengguna) |
| aud | Audience | Penerima token |
| exp | Expiration Time | Waktu kedaluwarsa token (Unix timestamp) |
| nbf | Not Before | Waktu sebelum token tidak valid (Unix timestamp) |
| iat | Issued At | Waktu penerbitan token (Unix timestamp) |
| jti | JWT ID | Pengidentifikasi unik token |