Cara menggunakan
- Pilih Enkode untuk mengubah teks menjadi Base32hex, atau Dekode untuk mengubah Base32hex kembali menjadi teks.
- Biarkan varian Base32hex tetap terpilih. Matikan Padding atau beralih ke Huruf kecil jika format Anda memerlukannya.
- Ketik atau tempel masukan Anda, atau klik Buka file. Hasilnya diperbarui saat Anda mengetik.
- 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
| Alfabet | 0-9 A-V |
|---|---|
| Ukuran keluaran | 8 karakter per 5 byte (160%) |
| Padding | Diisi = hingga kelipatan 8 karakter |
| Standar | RFC 4648 bagian 7 |
| Peka huruf besar-kecil | Tidak |
Contoh
| Masukan (UTF-8) | Keluaran |
|---|---|
Hello, World! | 91IMOR3F5GG5ERRIDHI22=== |
Base64.is | 89GN6P9M6GN6ISO= |
你好 | SIUQ1PD5NK====== |
Pertanyaan yang sering diajukan
Apa perbedaan antara Base32 dan Base32hex?
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?
= hingga kelipatan 8 karakter, tetapi banyak format, termasuk NSEC3, menghilangkannya. Decoder menerima keduanya, jadi pilih sesuai yang diharapkan sistem penerima.