Encoder dan Decoder Crockford Base32

Ubah teks, byte hex, atau file ke Base32 rancangan Douglas Crockford dan sebaliknya. Decoder-nya memaafkan salah ketik: huruf besar-kecil dan tanda hubung diabaikan, O dibaca sebagai 0, serta I atau L dibaca sebagai 1.

Berjalan sepenuhnya di browser Anda. Tidak ada yang diunggah.

Cara menggunakan

  1. Pilih Enkode untuk mengubah teks menjadi Crockford Base32, atau Dekode untuk mengubahnya kembali menjadi teks.
  2. Biarkan varian Crockford tetap terpilih dan pastikan Padding dimatikan. Aktifkan Huruf kecil untuk keluaran huruf kecil.
  3. Ketik atau tempel masukan Anda, atau klik Buka file. Saat mendekode, tanda hubung dan spasi diabaikan.
  4. Salin hasilnya atau unduh sebagai file.

Apa itu Crockford Base32?

Douglas Crockford merancang alfabet Base32 ini untuk ID yang dibaca, diketik, dan diucapkan oleh manusia. Alfabetnya memakai sepuluh digit dan 22 huruf besar: 0123456789ABCDEFGHJKMNPQRSTVWXYZ. Huruf I dan L tidak dipakai karena mirip digit 1, O karena mirip 0, dan U untuk mengurangi kemungkinan tanpa sengaja membentuk kata-kata kasar.

Setiap simbol membawa 5 bit, sehingga 5 byte menjadi 8 karakter, sama seperti Base32 RFC 4648. Simbol-simbolnya tersusun dalam urutan ASCII menaik, sehingga string tanpa padding dengan satu jenis huruf terurut sama seperti data yang dienkodenya. Spesifikasi Crockford tidak memakai padding, jadi biarkan opsi Padding tetap nonaktif.

Dekode yang toleran

Spesifikasi Crockford meminta decoder menerima apa yang benar-benar diketik orang, dan alat ini melakukannya:

  • Huruf besar dan huruf kecil diperlakukan sama.
  • Huruf O dibaca sebagai digit 0, sedangkan huruf I dan L dibaca sebagai 1.
  • Tanda hubung, yang dapat disisipkan agar kode panjang lebih mudah dibaca, diabaikan, begitu pula spasi dan jeda baris.

Huruf U tidak valid dan dilaporkan beserta posisinya.

Byte, bilangan, dan ULID

Crockford menjelaskan pengodeannya dalam bentuk bilangan, sedangkan alat ini mengenkode urutan byte dalam kelompok 5 bit, seperti cara RFC 4648, dengan memakai simbol Crockford. Jika jumlah bit bukan kelipatan 5, implementasi berbasis bilangan menaruh bit nol sisa di depan, sedangkan alat ini menaruhnya di akhir, sehingga hasilnya bisa berbeda.

ULID adalah contoh yang umum. ULID memakai alfabet Crockford, tetapi mengenkode nilai 128 bit-nya sebagai bilangan dalam 26 karakter, sehingga 16 byte sebuah ULID tidak menghasilkan string yang sama di sini, dan mendekode ULID menghasilkan byte yang bergeser dua bit. Simbol pemeriksa opsional dari spesifikasi Crockford, yaitu karakter tambahan untuk nilai modulo 37, tidak didukung: alat ini tidak menambahkan maupun memverifikasinya.

Spesifikasi

Alfabet0-9 A-Z tanpa I L O U
Ukuran keluaran8 karakter per 5 byte (160%)
PaddingTidak ada
StandarCrockford Base32 (2002)
Peka huruf besar-kecilTidak

Contoh

Masukan (UTF-8)Keluaran
Hello, World!91JPRV3F5GG5EVVJDHJ22
Base64.is89GQ6S9P6GQ6JWR
你好WJYT1SD5QM

Pertanyaan yang sering diajukan

Apakah Crockford Base32 peka huruf besar-kecil?

Tidak. Keluarannya menggunakan huruf besar secara default, dan opsi Huruf kecil mengubahnya menjadi huruf kecil. Decoder menerima keduanya, bahkan jika dicampur dalam satu string.

Mengapa I, L, O, dan U tidak ada dalam alfabet?

I dan L mudah tertukar dengan 1, dan O dengan 0, sehingga huruf-huruf tersebut tidak dipakai dan dibaca sebagai digit itu saat dekode. U dikecualikan agar kode acak lebih kecil kemungkinannya membentuk kata-kata kasar dalam bahasa Inggris.

Apakah alat ini mendukung simbol pemeriksa Crockford?
Tidak. Spesifikasinya mengizinkan satu karakter tambahan opsional berisi checksum modulo 37, yang memakai simbol tambahan * ~ $ = U. Alat ini tidak menambahkan atau memverifikasinya, jadi hapus simbol pemeriksa sebelum mendekode.
Bisakah saya mendekode ULID di sini?

Tidak menjadi 16 byte yang persis. ULID mengenkode 128 bit-nya sebagai satu bilangan dengan bit sisa di depan, sedangkan alat ini bekerja dengan kelompok byte dan menaruh bit sisa di akhir. Gunakan library ULID untuk membaca bagian timestamp dan bagian acaknya.