Encoder dan Decoder Base32hex

Ubah teks, byte hex, atau file ke Base32 dengan alfabet extended hex dan sebaliknya. Atur padding dan huruf besar-kecil, misalnya untuk menghasilkan label bergaya NSEC3.

Berjalan sepenuhnya di browser Anda. Tidak ada yang diunggah.

Cara menggunakan

  1. Pilih Enkode untuk mengubah teks menjadi Base32hex, atau Dekode untuk mengubah Base32hex kembali menjadi teks.
  2. Biarkan varian Base32hex tetap terpilih. Matikan Padding atau beralih ke Huruf kecil jika format Anda memerlukannya.
  3. Ketik atau tempel masukan Anda, atau klik Buka file. Hasilnya diperbarui saat Anda mengetik.
  4. Salin hasilnya atau unduh sebagai file.

Apa itu Base32hex?

Base32hex adalah "Base 32 Encoding with Extended Hex Alphabet" yang didefinisikan dalam bagian 7 RFC 4648. Cara kerjanya persis seperti Base32 standar: setiap karakter membawa 5 bit, setiap 5 byte menjadi 8 karakter, dan keluaran diberi padding = hingga kelipatan 8. Yang berbeda hanya alfabetnya. Alih-alih A-Z 2-7, Base32hex melanjutkan hitungan dari titik berhentinya heksadesimal: digit 0 hingga 9 mewakili 0 hingga 9, A adalah 10, dan V adalah 31.

Karena kedua alfabet memiliki sebagian besar karakter yang sama, string Base32hex sering kali dapat dimasukkan ke decoder Base32 standar tanpa error, tetapi byte yang dihasilkan salah. Selalu dekode dengan varian yang sama dengan yang dipakai saat mengenkode.

Urutan sortir tetap terjaga

Alfabetnya tersusun dalam urutan ASCII menaik, dan nilai setiap karakter bertambah sesuai posisinya. Akibatnya, membandingkan dua string Base32hex karakter demi karakter menghasilkan urutan yang sama dengan membandingkan byte di baliknya. RFC 4648 menyebut sifat ini sebagai hal yang tidak dimiliki Base32 standar dan Base64, dan sifat inilah yang membuat Base32hex cocok untuk kunci di penyimpanan terurut seperti database dan key-value store.

Gunakan satu jenis huruf untuk semua string, dan matikan padding jika panjang masukannya berbeda-beda: tanda = berada di antara digit dan huruf dalam urutan sortir, sehingga dapat merusak urutan.

Base32hex dalam DNSSEC NSEC3

Record NSEC3, yang didefinisikan dalam RFC 5155, membuktikan bahwa sebuah nama DNS tidak ada sekaligus mempersulit upaya mendaftar semua nama dalam zona. Setiap nama di-hash dengan SHA-1, lalu hash 20 byte tersebut ditulis sebagai label Base32hex sepanjang 32 karakter tanpa padding, biasanya ditampilkan dalam huruf kecil. Karena pengodean ini mempertahankan urutan hash, nama-nama yang di-hash membentuk rantai yang terurut. Untuk mengubah hash menjadi label seperti itu, tempel sebagai masukan hex, matikan Padding, lalu pilih Huruf kecil. Alat ini hanya melakukan langkah pengodean; alat ini tidak menghitung hash NSEC3 yang memakai salt dan iterasi.

Base32hex dalam kode

# Python 3.10+
import base64
base64.b32hexencode(b'foobar')          # b'CPNMUOJ1E8======'
base64.b32hexdecode('CPNMUOJ1E8======') # b'foobar'

// Go (import "encoding/base32")
base32.HexEncoding.EncodeToString(data)
base32.HexEncoding.WithPadding(base32.NoPadding).EncodeToString(data)

Spesifikasi

Alfabet0-9 A-V
Ukuran keluaran8 karakter per 5 byte (160%)
PaddingDiisi = hingga kelipatan 8 karakter
StandarRFC 4648 bagian 7
Peka huruf besar-kecilTidak

Contoh

Masukan (UTF-8)Keluaran
Hello, World!91IMOR3F5GG5ERRIDHI22===
Base64.is89GN6P9M6GN6ISO=
你好SIUQ1PD5NK======

Pertanyaan yang sering diajukan

Apa perbedaan antara Base32 dan Base32hex?
Keduanya memakai 5 bit per karakter dan aturan padding yang sama. Base32 standar memakai A-Z 2-7; Base32hex memakai 0-9 A-V, yang mempertahankan urutan sortir data. Keduanya tidak dapat saling menggantikan.
Apakah Base32hex peka huruf besar-kecil?

Alfabetnya didefinisikan dalam huruf besar, tetapi decoder ini juga menerima masukan huruf kecil. Aktifkan Huruf kecil jika Anda memerlukan keluaran huruf kecil, misalnya untuk label DNS.

Apakah saya perlu memakai padding?
RFC 4648 menambahkan padding = hingga kelipatan 8 karakter, tetapi banyak format, termasuk NSEC3, menghilangkannya. Decoder menerima keduanya, jadi pilih sesuai yang diharapkan sistem penerima.
Apakah string Base32hex sama dengan heksadesimal?
Tidak. String Base32hex yang kebetulan hanya berisi 0-9 dan A-F memang terlihat seperti hex, tetapi setiap karakternya membawa 5 bit, bukan 4. Untuk bekerja dengan hex biasa, gunakan alat Base16.