Encoder dan Decoder Base45

Ubah teks, byte hex, atau file ke Base45 dan sebaliknya. Base45 memakai 45 karakter dari mode alfanumerik kode QR, sehingga data biner muat dalam kode QR dengan overhead kecil.

Berjalan sepenuhnya di browser Anda. Tidak ada yang diunggah.

Cara menggunakan

  1. Pilih Enkode untuk mengubah teks menjadi Base45, atau Dekode untuk mengubah Base45 kembali menjadi teks atau byte.
  2. Ketik atau tempel masukan Anda, atau klik Buka file. Jangan hapus spasi: spasi adalah bagian dari alfabet.
  3. Saat mendekode data biner seperti payload sertifikat, alihkan keluaran ke Hex.
  4. Salin hasilnya atau unduh sebagai file.

Apa itu Base45?

Base45 didefinisikan dalam RFC 9285. Alfabetnya terdiri dari digit 0-9, huruf besar A-Z, dan sembilan simbol: spasi dan $ % * + - . / :. Inilah tepatnya 45 karakter yang dapat disimpan kode QR dalam mode alfanumeriknya yang ringkas. Perhatikan bahwa spasi adalah karakter sungguhan dalam alfabet, bukan pemisah.

Encoder membaca masukan dua byte sekaligus, menafsirkannya sebagai bilangan dari 0 hingga 65535, lalu menulis bilangan tersebut sebagai tiga digit Base45, dimulai dari digit yang paling tidak signifikan. Satu byte terakhir yang tersisa menjadi dua karakter. Sebagai teks, hasilnya 1,5 kali ukuran masukan, lebih besar daripada Base64.

Mengapa Base45 cocok untuk kode QR

Dalam mode alfanumerik, kode QR mengemas dua karakter ke dalam 11 bit. Base64 tidak dapat memakai mode tersebut karena memerlukan huruf kecil, sehingga harus beralih ke mode byte dengan 8 bit per karakter, kira-kira 10,7 bit untuk setiap byte data. Base45 hanya memerlukan 8,25 bit per byte dalam mode alfanumerik, sehingga data yang sama muat dalam kode QR yang lebih kecil dan lebih mudah dipindai.

Saat mendekode, biarkan spasi persis seperti aslinya; hanya jeda baris yang diabaikan. Huruf kecil bukan bagian dari alfabet dan dilaporkan sebagai tidak valid.

Mendekode Sertifikat COVID Digital Uni Eropa

Kode QR pada Sertifikat COVID Digital Uni Eropa berisi teks yang diawali HC1:. Sisanya adalah Base45: data sertifikat dienkode sebagai CBOR, ditandatangani dengan COSE, dikompresi dengan zlib, lalu dienkode dengan Base45. Untuk melihat isinya:

  1. Hapus awalan HC1:. Keempat karakternya merupakan Base45 yang valid, sehingga jika dibiarkan, byte yang dihasilkan akan salah.
  2. Dekode sisanya di sini dengan keluaran Hex. Data zlib biasanya diawali byte 78.
  3. Dekompresi byte tersebut dengan zlib dan urai CBOR-nya dengan alat lain.

Alat ini hanya menangani langkah Base45. Alat ini tidak mendekompresi data, mengurainya, atau memverifikasi tanda tangannya.

Base45 dalam kode

# Python (pip install base45)
import base45
base45.b45encode(b'AB')     # contoh RFC 9285: BB8
base45.b45decode('BB8')     # b'AB'

Spesifikasi

Alfabet0-9 A-Z spasi $ % * + - . / :
Ukuran keluaran3 karakter per 2 byte (150%)
PaddingTidak ada
StandarRFC 9285
Peka huruf besar-kecilYa

Contoh

Masukan (UTF-8)Keluaran
Hello, World!%69 VDK2E:3404ESVDX0
Base64.isSH8LQEG%61*5P2
你好C-SEFK*.K

Pertanyaan yang sering diajukan

Mengapa keluaran Base45 berisi spasi?

Spasi adalah salah satu dari 45 karakter alfabet, sehingga spasi membawa data. Jangan memangkas atau menggabungkan spasi dalam teks Base45, karena dekode akan gagal atau menghasilkan byte yang salah.

Bagaimana cara mendekode string HC1:?

Hapus awalan HC1:, dekode sisanya dengan keluaran Hex, lalu dekompresi hasilnya dengan zlib dan baca data CBOR-nya dengan alat terpisah. Alat ini hanya melakukan langkah Base45.

Apakah Base45 peka huruf besar-kecil?

Ya. Hanya huruf besar yang termasuk dalam alfabet, karena mode alfanumerik QR tidak memiliki huruf kecil. Masukan huruf kecil dilaporkan sebagai tidak valid, beserta posisinya.

Apakah Base45 lebih ringkas daripada Base64?

Sebagai teks biasa, tidak: Base45 berukuran 1,5 kali masukan, sedangkan Base64 sekitar 1,33 kali. Di dalam kode QR, ya, karena Base45 dapat memakai mode alfanumerik yang lebih padat.