Pada catatan terkait, berikut adalah konverter dasar untuk konversi dasar sewenang-wenang yang saya buat untuk Anda. Nikmati!
https://convert.zamicol.com/
Apa itu Karakter Padding?
Karakter padding membantu memenuhi persyaratan panjang dan tidak memiliki arti.
Contoh Pengisi Desimal:
Mengingat persyaratan arbitrer, semua string memiliki panjang 8 karakter, angka 640 dapat memenuhi persyaratan ini menggunakan 0 sebelumnya sebagai karakter pengisi karena tidak memiliki arti, "00000640".
Pengkodean Biner
Paradigma Byte: Byte adalah unit pengukuran standar de facto dan skema encoding apa pun harus berhubungan kembali dengan byte.
Base256 sangat cocok dengan paradigma ini. Satu byte sama dengan satu karakter di base256.
Base16 , heksadesimal atau heksadesimal, menggunakan 4 bit untuk setiap karakter. Satu byte dapat mewakili dua karakter base16.
Base64 tidak cocok secara merata ke dalam paradigma byte (begitu pula base32), tidak seperti base256 dan base16. Semua karakter base64 dapat direpresentasikan dalam 6 bit, 2 bit pendek dari byte penuh.
Kita dapat merepresentasikan pengkodean base64 versus paradigma byte sebagai pecahan: 6 bit per karakter lebih dari 8 bit per byte . Pengurangan fraksi ini adalah 3 byte lebih dari 4 karakter.
Rasio ini, 3 byte untuk setiap 4 karakter base64, adalah aturan yang ingin kami ikuti saat mengenkode base64. Pengkodean Base64 hanya dapat menjanjikan pengukuran dengan bundel 3 byte, tidak seperti base16 dan base256 di mana setiap byte dapat berdiri sendiri.
Begitu mengapa padding didorong meskipun pengkodean dapat berfungsi dengan baik tanpa karakter padding?
Jika panjang aliran tidak diketahui atau jika mungkin berguna untuk mengetahui secara pasti kapan aliran data berakhir, gunakan padding. Karakter padding mengkomunikasikan secara eksplisit bahwa titik ekstra tersebut harus kosong dan mengesampingkan ambiguitas. Bahkan jika panjangnya tidak diketahui dengan padding, Anda akan tahu di mana aliran data Anda berakhir.
Sebagai contoh tandingan, beberapa standar seperti JOSE tidak mengizinkan karakter pengisi. Dalam kasus ini, jika ada sesuatu yang hilang, tanda tangan kriptografik tidak akan berfungsi atau karakter non base64 lainnya akan hilang (seperti "."). Meskipun asumsi tentang panjang tidak dibuat, padding tidak diperlukan karena jika ada sesuatu yang salah tidak akan berhasil.
Dan inilah yang dikatakan base64 RFC,
Dalam beberapa situasi, penggunaan padding ("=") dalam data yang dikodekan basis tidak diperlukan atau digunakan. Dalam kasus umum, ketika asumsi tentang ukuran data yang diangkut tidak dapat dibuat, padding diperlukan untuk menghasilkan data yang diterjemahkan dengan benar.
[...]
Langkah padding dalam basis 64 [...] jika tidak diterapkan dengan benar, menyebabkan perubahan non-signifikan dari data yang dikodekan. Misalnya, jika input hanya satu oktet untuk pengkodean basis 64, maka enam bit dari simbol pertama digunakan, tetapi hanya dua bit pertama dari simbol berikutnya yang digunakan. Bit pad ini HARUS disetel ke nol dengan enkoder yang sesuai, yang dijelaskan dalam deskripsi tentang pengisi di bawah. Jika properti ini tidak berlaku, tidak ada representasi kanonik dari data yang dikodekan basis, dan beberapa string yang dikodekan basis dapat didekodekan ke data biner yang sama. Jika properti ini (dan properti lain yang dibahas dalam dokumen ini) berlaku, encoding kanonik dijamin.
Padding memungkinkan kita untuk memecahkan kode pengkodean base64 dengan janji tidak ada bit yang hilang. Tanpa padding tidak ada lagi pengakuan eksplisit untuk pengukuran dalam bundel tiga byte. Tanpa padding, Anda mungkin tidak dapat menjamin reproduksi yang tepat dari pengkodean asli tanpa informasi tambahan biasanya dari tempat lain dalam tumpukan Anda, seperti TCP, checksum, atau metode lain.
Contoh
Berikut adalah contoh formulir RFC 4648 ( http://tools.ietf.org/html/rfc4648#section-8 )
Setiap karakter di dalam fungsi "BASE64" menggunakan satu byte (base256). Kami kemudian menerjemahkannya ke base64.
BASE64("") = "" (No bytes used. 0%3=0.)
BASE64("f") = "Zg==" (One byte used. 1%3=1.)
BASE64("fo") = "Zm8=" (Two bytes. 2%3=2.)
BASE64("foo") = "Zm9v" (Three bytes. 3%3=0.)
BASE64("foob") = "Zm9vYg==" (Four bytes. 4%3=1.)
BASE64("fooba") = "Zm9vYmE=" (Five bytes. 5%3=2.)
BASE64("foobar") = "Zm9vYmFy" (Six bytes. 6%3=0.)
Berikut ini pembuat enkode yang dapat Anda mainkan: http://www.motobit.com/util/base64-decoder-encoder.asp