tools / base32
base32/
Konversi teks ke Base32 dan sebaliknya, dalam RFC 4648 standar atau Base32Hex. Teks dienkode sebagai UTF-8, dan dekode menerima huruf kecil, spasi, serta = yang hilang.
Teks asli
Base32
Pertanyaan umum
Apa itu Base32, dan apa bedanya dengan Base64?
Base32 menulis setiap 5 byte sebagai 8 karakter dari alfabet yang hanya berisi 32 karakter (A-Z dan 2-7 pada bentuk standar), sehingga outputnya sekitar 60% lebih panjang dari input, sedangkan Base64 hanya menambah sekitar sepertiga. Sebagai gantinya, Base32 tidak membedakan huruf besar dan kecil serta tidak memakai angka 0, 1, 8, atau 9, sehingga sulit tertukar dengan huruf O, I, dan B. Ini cocok untuk disalin tangan, dibacakan, dan tempat yang tidak membedakan huruf besar-kecil, seperti kunci 2FA dan nama file.
Sebaiknya pilih Base32 standar atau Base32Hex?
Base32 yang biasa Anda temui, termasuk kunci 2FA dan output default sebagian besar library, adalah varian standar (RFC 4648 bagian 6, alfabet A-Z dan 2-7). Base32Hex (bagian 7, alfabet 0-9 dan A-V) menjaga urutan pengurutan teks hasil enkode sama dengan urutan pengurutan byte aslinya, itulah sebabnya NSEC3 pada DNSSEC memakainya. Keduanya tidak bisa saling mendekode: salah pilih sering menghasilkan error "bukan karakter Base32", dan kadang hanya menghasilkan karakter kacau.
Apakah kunci 2FA berformat Base32, dan bagaimana cara melihat isinya?
Ya. Secret TOTP (parameter secret pada tautan otpauth:// di QR code, atau kunci yang diketik manual) biasanya Base32 standar, umumnya huruf besar tanpa =, dan kadang ditampilkan dalam kelompok 4 karakter yang dipisahkan spasi; dekode di sini menerima semuanya. Hasilnya berupa byte acak, bukan teks, jadi centang "Tampilkan hasil sebagai hex" untuk melihatnya. Contohnya, JBSWY3DPEHPK3PXP adalah 48 65 6c 6c 6f 21 de ad be ef. Untuk membuat kode sekali pakai, gunakan alat 2FA di situs ini.
Apa yang harus dilakukan jika muncul "Panjang tidak valid", "bukan karakter Base32", atau "= hanya boleh ada di akhir"?
"Panjang tidak valid" berarti setelah = dihapus, jumlah karakter menyisakan 1, 3, atau 6 jika dibagi 8; Base32 yang valid hanya menyisakan 0, 2, 4, 5, atau 7, jadi kemungkinan besar ada karakter yang terlewat saat menyalin. "Bukan karakter Base32" menunjukkan posisi karakternya: varian standar tidak punya 0, 1, 8, atau 9, dan tidak ada tanda baca atau karakter full-width; jika isinya berisi 0-9 dan A-V, mungkin itu Base32Hex, jadi ganti variannya. "= hanya boleh ada di akhir" berarti masih ada isi setelah tanda =, mungkin beberapa string tertempel jadi satu dan perlu didekode terpisah. Spasi, baris baru, huruf kecil, dan = yang hilang tidak pernah menimbulkan error.
Apa fungsi = di akhir, dan bolehkah dihapus?
Tanda = menambahkan panjang hingga kelipatan 8 dan bukan bagian dari data. Saat dekode, ada atau tidaknya tidak masalah; saat enkode, "Tambahkan padding =" dicentang secara default, jadi hapus centangnya jika tidak diperlukan. Boleh tidaknya dihilangkan tergantung penerima: format tautan otpauth Google Authenticator menyebutkan secret tidak perlu padding sehingga biasanya dihilangkan, sedangkan base64.b32decode di Python mewajibkannya dan akan menampilkan Incorrect padding jika tidak ada.
Hasil dekode berantakan, atau muncul pesan bukan UTF-8 yang valid. Apa yang harus dilakukan?
Artinya byte hasil dekode bukan teks UTF-8. Kunci 2FA, hash, dan data terenkripsi memang biner sejak awal; centang "Tampilkan hasil sebagai hex" untuk melihat byte aslinya. Alat ini hanya menampilkan teks sebagai UTF-8. Jika teks aslinya memakai GBK atau encoding lain, centang hex dulu, lalu gunakan alat Teks ke Hex di situs ini dan pilih GBK untuk mengubah byte kembali menjadi teks.
Hasil enkode berbeda dengan Python atau bahasa lain. Mengapa?
Periksa tiga hal. Pertama, apakah input diakhiri baris baru atau spasi tambahan: alat ini mengenkode apa adanya sebagai UTF-8 dan tidak memangkasnya. Kedua, apakah variannya sama: di Python bentuk standar adalah base64.b32encode dan Base32Hex adalah base64.b32hexencode (tersedia sejak 3.10). Ketiga, apakah padding = aktif. Varian dengan alfabet berbeda, seperti Crockford dan z-base-32, tidak didukung dan hasilnya tidak akan sama.
Apakah isi yang saya masukkan diunggah?
Tidak. Enkode dan dekode berjalan di browser Anda, tanpa mengirim permintaan jaringan apa pun dan tanpa menyimpan apa pun; kunci 2FA tidak pernah meninggalkan browser Anda.