Saya tahu apa itu base64
pengkodean dan bagaimana menghitung base64
pengkodean dalam C #, namun saya telah melihat beberapa kali bahwa ketika saya mengubah string menjadi base64, ada =
pada akhirnya.
Beberapa pertanyaan muncul:
- Apakah
base64
senar selalu diakhiri=
? - Mengapa
=
bisa ditambahkan pada akhirnya?
Jawaban:
Ini berfungsi sebagai bantalan .
Jawaban yang lebih lengkap adalah bahwa string yang disandikan base64 tidak selalu berakhir dengan a
=
, itu hanya akan berakhir dengan satu atau dua=
jika mereka diminta untuk memasukkan string ke panjang yang tepat.sumber
=
sudah cukup. Jika Anda ingin menemukan batasan kembali maka terminator harus selalu ada (dan masih hanya satu karakter yang diperlukan). Konsep padding keseluruhan dari Base64 hanyalah sebuah pemikiran ...base64
efisien dengan ilustrasi dan contoh. Tautan saat ini ke wikipedia sama sekali tidak relevan seperti @NH. tersebut.1-Tidak
2- Sebagai jawaban singkat: Karakter ke-65 ("=" tanda) hanya digunakan sebagai pelengkap dalam proses akhir penyandian pesan.
Anda tidak akan memiliki tanda '=' jika string Anda memiliki kelipatan angka 3 karakter, karena
Base64
pengodean mengambil masing-masing tiga byte (8bits) dan mewakili mereka sebagai empat karakter yang dapat dicetak dalam standar ASCII.Detail:
(Sebuah) Jika Anda ingin menyandikan
ABCDEFG <=> [
ABC
] [DEF
] [G
Base64
akan menangani (menghasilkan 4 karakter) dengan blok pertama dan yang kedua (setelah selesai) tetapi untuk yang ketiga akan menambahkan dua kali lipat==
dalam output untuk menyelesaikan 4 karakter yang diperlukan. Jadi, hasilnya akan QUJD REVG Rw == (tanpa spasi)(b) Jika Anda ingin menyandikan ...
ABCDEFGH <=> [
ABC
] [DEF
] []GH
Demikian pula, itu akan menambahkan hanya satu
=
di akhir output untuk mendapatkan 4 karakter hasilnya akan QUJD REVG R0g = (tanpa spasi)sumber
Dari Wikipedia :
Jadi, ini semacam padding.
sumber
sumber
=
di akhir dan menguji ini untuk 1 juta string. Penguraiannya selalu cocok.Ini didefinisikan dalam RFC 2045 sebagai karakter padding khusus jika kurang dari 24 bit tersedia di akhir data yang disandikan.
sumber
Tanda sama dengan (=) digunakan sebagai pengisi dalam bentuk pengkodean base64 tertentu. The artikel Wikipedia pada base64 memiliki semua rincian.
sumber
Ini padding. Dari http://en.wikipedia.org/wiki/Base64 :
sumber
decode(encode(A)+encode(B))=A+B
bekerja dengan padding tetapi bukan tanpa.http://www.hcidata.info/base64.htm
Pengkodean "Mary harus" ke Basis 64
Dalam contoh ini kita menggunakan string teks sederhana ("Mary punya") tetapi prinsipnya tetap berlaku apa pun datanya (misalnya file grafik). Untuk mengonversi setiap 24 bit data input menjadi 32 bit output, pengkodean Basis 64 membagi 24 bit menjadi 4 potongan 6 bit. Masalah pertama yang kita perhatikan adalah bahwa "Mary punya" bukan kelipatan 3 byte - panjangnya 8 byte. Karena ini, kelompok bit terakhir hanya 4 bit. Untuk mengatasinya, kami menambahkan dua bit ekstra '0' dan mengingat fakta ini dengan meletakkan '=' di akhir. Jika string teks yang akan dikonversi ke Base 64 adalah 7 byte panjang, grup terakhir akan memiliki 2 bit. Dalam hal ini kita akan menambahkan empat bit tambahan '0' dan mengingat fakta ini dengan meletakkan '==' di akhir.
sumber